@medplum/react 2.1.3 → 2.1.4

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 Za from"react";function Ya(e){let o=e.value;return o?Za.createElement(Za.Fragment,null,Hs(o)):null}import{Group as Vs,NativeSelect as en,TextInput as Qo}from"@mantine/core";import Ge,{useRef as qs,useState as Us}from"react";function on(e,o){return e.line&&e.line.length>o?e.line[o]:""}function tn(e,o,t){let r=e.line||[];for(;r.length<=o;)r.push("");return r[o]=t,{...e,line:r}}function rn(e){let[o,t]=Us(e.defaultValue||{}),r=qs();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(tn(r.current||{},0,c))}function s(c){a(tn(r.current||{},1,c))}function i(c){a({...r.current,city:c})}function u(c){a({...r.current,state:c})}function d(c){a({...r.current,postalCode:c})}return Ge.createElement(Vs,{spacing:"xs",grow:!0,noWrap:!0},Ge.createElement(en,{"data-testid":"address-use",defaultValue:o.use,onChange:c=>n(c.currentTarget.value),data:["","home","work","temp","old","billing"]}),Ge.createElement(en,{"data-testid":"address-type",defaultValue:o.type,onChange:c=>f(c.currentTarget.value),data:["","postal","physical","both"]}),Ge.createElement(Qo,{placeholder:"Line 1",defaultValue:on(o,0),onChange:c=>l(c.currentTarget.value)}),Ge.createElement(Qo,{placeholder:"Line 2",defaultValue:on(o,1),onChange:c=>s(c.currentTarget.value)}),Ge.createElement(Qo,{placeholder:"City",defaultValue:o.city,onChange:c=>i(c.currentTarget.value)}),Ge.createElement(Qo,{placeholder:"State",defaultValue:o.state,onChange:c=>u(c.currentTarget.value)}),Ge.createElement(Qo,{placeholder:"Postal Code",defaultValue:o.postalCode,onChange:c=>d(c.currentTarget.value)}))}import{TextInput as Ks}from"@mantine/core";import{createReference as js}from"@medplum/core";import _s,{useRef as Zs,useState as Ys}from"react";import{showNotification as Gs}from"@mantine/notifications";import Qs,{createContext as zs,useContext as Ws,useEffect as an,useMemo as Xs,useState as Js}from"react";var nn=zs(void 0);function Lh(e){let o=e.medplum,t=e.navigate??$s,[r,a]=Js({profile:o.getProfile(),loading:!1});an(()=>{function f(){a({...r,profile:o.getProfile()})}return o.addEventListener("change",f),()=>o.removeEventListener("change",f)},[o,r]),an(()=>{function f(){Gs({color:"red",message:"No connection to server",autoClose:!1})}return o.addEventListener("offline",f),()=>o.removeEventListener("offline",f)},[o]);let n=Xs(()=>({...r,medplum:o,navigate:t}),[r,o,t]);return Qs.createElement(nn.Provider,{value:n},e.children)}function zo(){return Ws(nn)}function P(){return zo().medplum}function Qe(){return zo().navigate}function xt(){return zo().profile}function $s(e){window.location.assign(e)}function fn(e){let o=xt(),[t,r]=Ys(e.defaultValue||{}),a=Zs();a.current=t;function n(f){let l=f?{text:f,authorReference:o&&js(o),time:new Date().toISOString()}:{};r(l),e.onChange&&e.onChange(l)}return _s.createElement(Ks,{name:e.name,placeholder:"Annotation text",defaultValue:t.text,onChange:f=>n(f.currentTarget.value)})}import{AppShell as Mu,useMantineTheme as Fu}from"@mantine/core";import fo,{Suspense as wu,useState as Ou}from"react";import{Alert as fi}from"@mantine/core";import{normalizeErrorString as li}from"@medplum/core";import{forwardRef as ei,createElement as sn}from"react";import ao from"prop-types";var ln={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 oi=Object.defineProperty,ti=Object.defineProperties,ri=Object.getOwnPropertyDescriptors,It=Object.getOwnPropertySymbols,cn=Object.prototype.hasOwnProperty,mn=Object.prototype.propertyIsEnumerable,un=(e,o,t)=>o in e?oi(e,o,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[o]=t,dn=(e,o)=>{for(var t in o||(o={}))cn.call(o,t)&&un(e,t,o[t]);if(It)for(var t of It(o))mn.call(o,t)&&un(e,t,o[t]);return e},ai=(e,o)=>ti(e,ri(o)),ni=(e,o)=>{var t={};for(var r in e)cn.call(e,r)&&o.indexOf(r)<0&&(t[r]=e[r]);if(e!=null&&It)for(var r of It(e))o.indexOf(r)<0&&mn.call(e,r)&&(t[r]=e[r]);return t},p=(e,o,t)=>{let r=ei((a,n)=>{var f=a,{color:l="currentColor",size:s=24,stroke:i=2,children:u}=f,d=ni(f,["color","size","stroke","children"]);return sn("svg",dn(ai(dn({ref:n},ln),{width:s,height:s,stroke:l,strokeWidth:i,className:`tabler-icon tabler-icon-${e}`}),d),[...t.map(([c,g])=>sn(c,g)),...u||[]])});return r.propTypes={color:ao.string,size:ao.oneOfType([ao.string,ao.number]),stroke:ao.oneOfType([ao.string,ao.number])},r.displayName=`${o}`,r};var xr=p("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 no=p("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=p("arrow-down","IconArrowDown",[["path",{d:"M12 5l0 14",key:"svg-0"}],["path",{d:"M18 13l-6 6",key:"svg-1"}],["path",{d:"M6 13l6 6",key:"svg-2"}]]);var gr=p("arrow-up","IconArrowUp",[["path",{d:"M12 5l0 14",key:"svg-0"}],["path",{d:"M18 11l-6 -6",key:"svg-1"}],["path",{d:"M6 11l6 -6",key:"svg-2"}]]);var hr=p("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 yr=p("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 Cr=p("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 vr=p("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 Sr=p("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 br=p("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 Ne=p("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 Wo=p("check","IconCheck",[["path",{d:"M5 12l5 5l10 -10",key:"svg-0"}]]);var Pr=p("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 Dr=p("chevron-down","IconChevronDown",[["path",{d:"M6 9l6 6l6 -6",key:"svg-0"}]]);var ze=p("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 xo=p("circle-plus","IconCirclePlus",[["path",{d:"M3 12a9 9 0 1 0 18 0a9 9 0 0 0 -18 0",key:"svg-0"}],["path",{d:"M9 12h6",key:"svg-1"}],["path",{d:"M12 9v6",key:"svg-2"}]]);var Xo=p("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 kr=p("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 Tr=p("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 Br=p("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 Ar=p("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 Mr=p("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 Io=p("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 go=p("equal","IconEqual",[["path",{d:"M5 10h14",key:"svg-0"}],["path",{d:"M5 14h14",key:"svg-1"}]]);var Fr=p("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 wr=p("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 Or=p("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 Er=p("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 Lr=p("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 gt=p("math-greater","IconMathGreater",[["path",{d:"M5 18l14 -6l-14 -6",key:"svg-0"}]]);var ht=p("math-lower","IconMathLower",[["path",{d:"M19 18l-14 -6l14 -6",key:"svg-0"}]]);var Rr=p("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 Nr=p("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 Hr=p("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 Vr=p("plus","IconPlus",[["path",{d:"M12 5l0 14",key:"svg-0"}],["path",{d:"M5 12l14 0",key:"svg-1"}]]);var qr=p("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 Ur=p("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 ho=p("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 Jo=p("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 $o=p("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 Gr=p("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 Qr=p("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 zr=p("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 Ko=p("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 Wr=p("x","IconX",[["path",{d:"M18 6l-12 12",key:"svg-0"}],["path",{d:"M6 6l12 12",key:"svg-1"}]]);import Xr from"react";var yo=class extends Xr.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?Xr.createElement(fi,{icon:Xr.createElement(no,{size:16}),title:"Something went wrong",color:"red"},li(this.state.error)):this.props.children}};import{Center as si,Loader as ii}from"@mantine/core";import pn from"react";function Jr(){return pn.createElement(si,{style:{width:"100%",height:"100vh"}},pn.createElement(ii,null))}import{Avatar as Xi,createStyles as Ji,Group as vt,Header as $i,Menu as He,Stack as Ki,Text as jo,UnstyledButton as Bn}from"@mantine/core";import{formatHumanName as ji,getReferenceString as An}from"@medplum/core";import Q,{useState as _i}from"react";import{formatHumanName as ui}from"@medplum/core";import xn from"react";function yt(e){let o=e.value;return o?xn.createElement(xn.Fragment,null,ui(o,e.options)):null}import{Avatar as Cn}from"@mantine/core";import{getDisplayString as Pi,getImageSrc as Di}from"@medplum/core";import $r from"react";import{Anchor as di}from"@mantine/core";import{isReference as ci,isResource as mi}from"@medplum/core";import pi from"react";function N(e){e.preventDefault(),e.stopPropagation()}function Ct(e){if(In(e))return!0;if(e instanceof HTMLTableCellElement){let o=e.children;if(o.length===1&&In(o[0]))return!0}return!1}function In(e){return e instanceof HTMLInputElement&&e.type==="checkbox"}function se(e){let o=Qe(),{to:t,suffix:r,label:a,onClick:n,children:f,...l}=e,s=xi(t);return r&&(s+="/"+r),pi.createElement(di,{href:s,"aria-label":a,onClick:i=>{N(i),n?n(i):t&&o(s)},...l},f)}function xi(e){if(e){if(typeof e=="string")return Ii(e);if(mi(e))return gi(e);if(ci(e))return hi(e)}return"#"}function Ii(e){return e.startsWith("http://")||e.startsWith("https://")||e.startsWith("/")?e:"/"+e}function gi(e){return`/${e.resourceType}/${e.id}`}function hi(e){return`/${e.reference}`}import{deepEquals as yi,isReference as yn,isResource as Ci,normalizeOperationOutcome as vi}from"@medplum/core";import{useCallback as Si,useEffect as gn,useState as bi}from"react";function X(e,o){let t=P(),[r,a]=bi(hn(t,e)),n=Si(f=>{yi(f,r)||a(f)},[r,a]);return gn(()=>{n(hn(t,e))},[t,e,n]),gn(()=>{let f=!0;return yn(e)&&t.readReference(e).then(l=>{f&&n(l)}).catch(l=>{f&&(n(void 0),o&&o(vi(l)))}),()=>f=!1},[t,r,e,n,o]),r}function hn(e,o){if(o){if(Ci(o))return o;if(yn(o))return e.getCachedReference(o)}}function Ce(e){let o=X(e.value),t=o?Pi(o):e.alt??"",r=(o&&Di(o))??e.src,a=e.radius??"xl",n={...e};return delete n.value,delete n.link,e.link?$r.createElement(se,{to:o},$r.createElement(Cn,{src:r,alt:t,radius:a,...n})):$r.createElement(Cn,{src:r,alt:t,radius:a,...n})}import{createStyles as wi,Group as Oi,Text as Sn}from"@mantine/core";import{formatHumanName as Ei,getDisplayString as kn,getReferenceString as Li,isUUID as Ri}from"@medplum/core";import We,{forwardRef as Ni,useCallback as bn}from"react";import{Loader as ki,MultiSelect as Ti}from"@mantine/core";import vn,{useCallback as Co,useEffect as Bi,useRef as vo,useState as So}from"react";import{showNotification as Ai}from"@mantine/notifications";import{normalizeErrorString as Mi}from"@medplum/core";function bo(e){let{defaultValue:o,toKey:t,toOption:r,loadOptions:a,onChange:n,onCreate:f,creatable:l,...s}=e,i=Fi(o),u=vo(null),[d,c]=So(void 0),[g,y]=So(),[A,v]=So(),[B,I]=So(),[H,b]=So(i.map(r)),[x,q]=So([]),oe=vo();oe.current=d;let me=vo();me.current=g;let te=vo();te.current=A;let qo=vo();qo.current=B;let C=vo();C.current=x;let R=Co(()=>{y(void 0);let Z=u.current?.value.trim()||"";if(Z===oe.current)return;c(Z);let le=new AbortController;v(le),a(Z,le.signal).then(pe=>{le.signal.aborted||(q(pe.map(r)),v(void 0),qo.current&&(pe.length>0&&n(pe.slice(0,1)),I(!1)))}).catch(pe=>{le.signal.aborted||pe.message.includes("aborted")||Ai({color:"red",message:Mi(pe)})})},[a,n,r]),Ae=Co(()=>{te.current&&(te.current.abort(),v(void 0)),me.current!==void 0&&window.clearTimeout(me.current);let Z=window.setTimeout(()=>R(),100);y(Z)},[R]),ye=Co(Z=>{let le=[],pe=[];for(let Uo of Z){let pt=C.current?.find(Ns=>Ns.value===Uo),Go=pt?.resource;!Go&&l!==!1&&f&&(Go=f(Uo),pt=r(Go)),Go&&le.push(Go),pt&&pe.push(pt)}n(le),b(pe)},[l,n,f,r]),ro=Co(Z=>{Z.key==="Enter"&&(!me.current&&!te.current?(N(Z),C.current&&C.current.length>0&&(q(C.current.slice(0,1)),ye([C.current[0].value]))):I(!0))},[ye]),k=Co(Z=>{let le=r(f(Z));return q([...C.current,le]),le},[f,q,r]),W=Co((Z,le)=>!le,[]);return Bi(()=>()=>{te.current&&te.current.abort()},[]),vn.createElement(Ti,{...s,ref:u,defaultValue:i.map(t),searchable:!0,onKeyDown:ro,onSearchChange:Ae,data:[...H,...x],onFocus:R,onChange:ye,onCreate:k,rightSectionWidth:40,rightSection:A?vn.createElement(ki,{size:16}):null,filter:W,creatable:!0})}function Fi(e){return e?Array.isArray(e)?e:[e]:[]}var Hi=wi(()=>({searchInput:{input:{width:220,transition:"width 0.2s"},"input:focus":{width:400},"@media (max-width: 800px)":{input:{width:150},"input:focus":{width:150}}}}));function Vi(e){return e.id}function qi(e){return{value:e.id,label:kn(e),resource:e}}function Tn(e){let{classes:o}=Hi(),t=Qe(),r=P(),a=bn(async(f,l)=>{let s=Gi(f),i={signal:l},u=await r.graphql(s,void 0,void 0,i);return Qi(u,f)},[r]),n=bn(f=>{f.length>0&&t(`/${Li(f[0])}`)},[t]);return We.createElement(bo,{key:`${e.pathname}?${e.searchParams}`,size:"sm",radius:"md",className:o.searchInput,icon:We.createElement(Ur,{size:16}),placeholder:"Search",itemComponent:Ui,toKey:Vi,toOption:qi,onChange:n,loadOptions:a,maxSelectedValues:0,clearSearchOnChange:!0,clearable:!1})}var Ui=Ni(({resource:e,...o},t)=>{let r;return e.resourceType==="Patient"?r=e.birthDate:e.resourceType==="ServiceRequest"&&(r=e.subject?.display),We.createElement("div",{ref:t,...o},We.createElement(Oi,{noWrap:!0},We.createElement(Ce,{value:e}),We.createElement("div",null,We.createElement(Sn,null,kn(e)),We.createElement(Sn,{size:"xs",color:"dimmed"},r))))});function Gi(e){let o=JSON.stringify(e);return Ri(e)?`{
1
+ import{formatAddress as Us}from"@medplum/core";import on from"react";function tn(e){let o=e.value;return o?on.createElement(on.Fragment,null,Us(o)):null}import{Group as Gs,NativeSelect as rn,TextInput as Go}from"@mantine/core";import Ge,{useRef as Qs,useState as zs}from"react";function an(e,o){return e.line&&e.line.length>o?e.line[o]:""}function nn(e,o,t){let r=e.line||[];for(;r.length<=o;)r.push("");return r[o]=t,{...e,line:r}}function fn(e){let[o,t]=zs(e.defaultValue||{}),r=Qs();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 s(c){a(nn(r.current||{},0,c))}function l(c){a(nn(r.current||{},1,c))}function i(c){a({...r.current,city:c})}function u(c){a({...r.current,state:c})}function d(c){a({...r.current,postalCode:c})}return Ge.createElement(Gs,{spacing:"xs",grow:!0,noWrap:!0},Ge.createElement(rn,{"data-testid":"address-use",defaultValue:o.use,onChange:c=>n(c.currentTarget.value),data:["","home","work","temp","old","billing"]}),Ge.createElement(rn,{"data-testid":"address-type",defaultValue:o.type,onChange:c=>f(c.currentTarget.value),data:["","postal","physical","both"]}),Ge.createElement(Go,{placeholder:"Line 1",defaultValue:an(o,0),onChange:c=>s(c.currentTarget.value)}),Ge.createElement(Go,{placeholder:"Line 2",defaultValue:an(o,1),onChange:c=>l(c.currentTarget.value)}),Ge.createElement(Go,{placeholder:"City",defaultValue:o.city,onChange:c=>i(c.currentTarget.value)}),Ge.createElement(Go,{placeholder:"State",defaultValue:o.state,onChange:c=>u(c.currentTarget.value)}),Ge.createElement(Go,{placeholder:"Postal Code",defaultValue:o.postalCode,onChange:c=>d(c.currentTarget.value)}))}import{TextInput as Zs}from"@mantine/core";import{createReference as Ys}from"@medplum/core";import ei,{useRef as oi,useState as ti}from"react";import{showNotification as Ws}from"@mantine/notifications";import Xs,{createContext as Js,useContext as $s,useEffect as ln,useMemo as Ks,useState as js}from"react";var sn=Js(void 0);function Uh(e){let o=e.medplum,t=e.navigate??_s,[r,a]=js({profile:o.getProfile(),loading:!1});ln(()=>{function f(){a({...r,profile:o.getProfile()})}return o.addEventListener("change",f),()=>o.removeEventListener("change",f)},[o,r]),ln(()=>{function f(){Ws({color:"red",message:"No connection to server",autoClose:!1})}return o.addEventListener("offline",f),()=>o.removeEventListener("offline",f)},[o]);let n=Ks(()=>({...r,medplum:o,navigate:t}),[r,o,t]);return Xs.createElement(sn.Provider,{value:n},e.children)}function Qo(){return $s(sn)}function P(){return Qo().medplum}function Qe(){return Qo().navigate}function pt(){return Qo().profile}function _s(e){window.location.assign(e)}function un(e){let o=pt(),[t,r]=ti(e.defaultValue||{}),a=oi();a.current=t;function n(f){let s=f?{text:f,authorReference:o&&Ys(o),time:new Date().toISOString()}:{};r(s),e.onChange&&e.onChange(s)}return ei.createElement(Zs,{name:e.name,placeholder:"Annotation text",defaultValue:t.text,onChange:f=>n(f.currentTarget.value)})}import{AppShell as Ou,useMantineTheme as Eu}from"@mantine/core";import no,{Suspense as Lu,useState as Ru}from"react";import{Alert as ii}from"@mantine/core";import{normalizeErrorString as ui}from"@medplum/core";import{forwardRef as ri,createElement as cn}from"react";import ro from"prop-types";var dn={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 ai=Object.defineProperty,ni=Object.defineProperties,fi=Object.getOwnPropertyDescriptors,xt=Object.getOwnPropertySymbols,xn=Object.prototype.hasOwnProperty,In=Object.prototype.propertyIsEnumerable,mn=(e,o,t)=>o in e?ai(e,o,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[o]=t,pn=(e,o)=>{for(var t in o||(o={}))xn.call(o,t)&&mn(e,t,o[t]);if(xt)for(var t of xt(o))In.call(o,t)&&mn(e,t,o[t]);return e},li=(e,o)=>ni(e,fi(o)),si=(e,o)=>{var t={};for(var r in e)xn.call(e,r)&&o.indexOf(r)<0&&(t[r]=e[r]);if(e!=null&&xt)for(var r of xt(e))o.indexOf(r)<0&&In.call(e,r)&&(t[r]=e[r]);return t},p=(e,o,t)=>{let r=ri((a,n)=>{var f=a,{color:s="currentColor",size:l=24,stroke:i=2,children:u}=f,d=si(f,["color","size","stroke","children"]);return cn("svg",pn(li(pn({ref:n},dn),{width:l,height:l,stroke:s,strokeWidth:i,className:`tabler-icon tabler-icon-${e}`}),d),[...t.map(([c,g])=>cn(c,g)),...u||[]])});return r.propTypes={color:ro.string,size:ro.oneOfType([ro.string,ro.number]),stroke:ro.oneOfType([ro.string,ro.number])},r.displayName=`${o}`,r};var xr=p("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 ao=p("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=p("arrow-down","IconArrowDown",[["path",{d:"M12 5l0 14",key:"svg-0"}],["path",{d:"M18 13l-6 6",key:"svg-1"}],["path",{d:"M6 13l6 6",key:"svg-2"}]]);var gr=p("arrow-up","IconArrowUp",[["path",{d:"M12 5l0 14",key:"svg-0"}],["path",{d:"M18 11l-6 -6",key:"svg-1"}],["path",{d:"M6 11l6 -6",key:"svg-2"}]]);var hr=p("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 yr=p("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 Cr=p("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 vr=p("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 Sr=p("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 br=p("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 Re=p("calendar","IconCalendar",[["path",{d:"M4 7a2 2 0 0 1 2 -2h12a2 2 0 0 1 2 2v12a2 2 0 0 1 -2 2h-12a2 2 0 0 1 -2 -2v-12z",key:"svg-0"}],["path",{d:"M16 3v4",key:"svg-1"}],["path",{d:"M8 3v4",key:"svg-2"}],["path",{d:"M4 11h16",key:"svg-3"}],["path",{d:"M11 15h1",key:"svg-4"}],["path",{d:"M12 15v3",key:"svg-5"}]]);var zo=p("check","IconCheck",[["path",{d:"M5 12l5 5l10 -10",key:"svg-0"}]]);var Pr=p("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 Dr=p("chevron-down","IconChevronDown",[["path",{d:"M6 9l6 6l6 -6",key:"svg-0"}]]);var ze=p("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 po=p("circle-plus","IconCirclePlus",[["path",{d:"M3 12a9 9 0 1 0 18 0a9 9 0 0 0 -18 0",key:"svg-0"}],["path",{d:"M9 12h6",key:"svg-1"}],["path",{d:"M12 9v6",key:"svg-2"}]]);var Wo=p("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 kr=p("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 Tr=p("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 Br=p("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 Ar=p("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 Mr=p("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 xo=p("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 Io=p("equal","IconEqual",[["path",{d:"M5 10h14",key:"svg-0"}],["path",{d:"M5 14h14",key:"svg-1"}]]);var Fr=p("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 wr=p("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 Or=p("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 Er=p("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 Lr=p("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 It=p("math-greater","IconMathGreater",[["path",{d:"M5 18l14 -6l-14 -6",key:"svg-0"}]]);var gt=p("math-lower","IconMathLower",[["path",{d:"M19 18l-14 -6l14 -6",key:"svg-0"}]]);var Rr=p("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 Nr=p("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 Hr=p("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 Vr=p("plus","IconPlus",[["path",{d:"M12 5l0 14",key:"svg-0"}],["path",{d:"M5 12l14 0",key:"svg-1"}]]);var qr=p("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 Ur=p("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 go=p("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 Xo=p("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 Jo=p("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 Gr=p("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 Qr=p("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 zr=p("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 $o=p("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 Wr=p("x","IconX",[["path",{d:"M18 6l-12 12",key:"svg-0"}],["path",{d:"M6 6l12 12",key:"svg-1"}]]);import Xr from"react";var ho=class extends Xr.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?Xr.createElement(ii,{icon:Xr.createElement(ao,{size:16}),title:"Something went wrong",color:"red"},ui(this.state.error)):this.props.children}};import{Center as di,Loader as ci}from"@mantine/core";import gn from"react";function Jr(){return gn.createElement(di,{style:{width:"100%",height:"100vh"}},gn.createElement(ci,null))}import{Avatar as Ki,createStyles as ji,Group as Ct,Header as _i,Menu as Ne,Stack as Zi,Text as Ko,UnstyledButton as Fn}from"@mantine/core";import{formatHumanName as Yi,getReferenceString as wn}from"@medplum/core";import Q,{useState as eu}from"react";import{formatHumanName as mi}from"@medplum/core";import hn from"react";function ht(e){let o=e.value;return o?hn.createElement(hn.Fragment,null,mi(o,e.options)):null}import{Avatar as bn}from"@mantine/core";import{getDisplayString as Ti,getImageSrc as Bi}from"@medplum/core";import $r from"react";import{Anchor as pi}from"@mantine/core";import{isReference as xi,isResource as Ii}from"@medplum/core";import gi from"react";function N(e){e.preventDefault(),e.stopPropagation()}function yt(e){if(yn(e))return!0;if(e instanceof HTMLTableCellElement){let o=e.children;if(o.length===1&&yn(o[0]))return!0}return!1}function yn(e){return e instanceof HTMLInputElement&&e.type==="checkbox"}function se(e){let o=Qe(),{to:t,suffix:r,label:a,onClick:n,children:f,...s}=e,l=hi(t);return r&&(l+="/"+r),gi.createElement(pi,{href:l,"aria-label":a,onClick:i=>{N(i),n?n(i):t&&o(l)},...s},f)}function hi(e){if(e){if(typeof e=="string")return yi(e);if(Ii(e))return Ci(e);if(xi(e))return vi(e)}return"#"}function yi(e){return e.startsWith("http://")||e.startsWith("https://")||e.startsWith("/")?e:"/"+e}function Ci(e){return`/${e.resourceType}/${e.id}`}function vi(e){return`/${e.reference}`}import{deepEquals as Si,isReference as Sn,isResource as bi,normalizeOperationOutcome as Pi}from"@medplum/core";import{useCallback as Di,useEffect as Cn,useState as ki}from"react";function X(e,o){let t=P(),[r,a]=ki(vn(t,e)),n=Di(f=>{Si(f,r)||a(f)},[r,a]);return Cn(()=>{n(vn(t,e))},[t,e,n]),Cn(()=>{let f=!0;return Sn(e)&&t.readReference(e).then(s=>{f&&n(s)}).catch(s=>{f&&(n(void 0),o&&o(Pi(s)))}),()=>f=!1},[t,r,e,n,o]),r}function vn(e,o){if(o){if(bi(o))return o;if(Sn(o))return e.getCachedReference(o)}}function Ce(e){let o=X(e.value),t=o?Ti(o):e.alt??"",r=(o&&Bi(o))??e.src,a=e.radius??"xl",n={...e};return delete n.value,delete n.link,e.link?$r.createElement(se,{to:o},$r.createElement(bn,{src:r,alt:t,radius:a,...n})):$r.createElement(bn,{src:r,alt:t,radius:a,...n})}import{createStyles as Li,Group as Ri,Text as Dn}from"@mantine/core";import{formatHumanName as Ni,getDisplayString as An,getReferenceString as Hi,isUUID as Vi}from"@medplum/core";import We,{forwardRef as qi,useCallback as kn}from"react";import{Loader as Ai,MultiSelect as Mi}from"@mantine/core";import Pn,{useCallback as yo,useEffect as Fi,useRef as Co,useState as vo}from"react";import{showNotification as wi}from"@mantine/notifications";import{normalizeErrorString as Oi}from"@medplum/core";function So(e){let{defaultValue:o,toKey:t,toOption:r,loadOptions:a,onChange:n,onCreate:f,creatable:s,...l}=e,i=Ei(o),u=Co(null),[d,c]=vo(void 0),[g,y]=vo(),[A,v]=vo(),[B,I]=vo(),[H,b]=vo(i.map(r)),[x,q]=vo([]),oe=Co();oe.current=d;let me=Co();me.current=g;let te=Co();te.current=A;let Vo=Co();Vo.current=B;let C=Co();C.current=x;let R=yo(()=>{y(void 0);let Z=u.current?.value.trim()||"";if(Z===oe.current)return;c(Z);let le=new AbortController;v(le),a(Z,le.signal).then(pe=>{le.signal.aborted||(q(pe.map(r)),v(void 0),Vo.current&&(pe.length>0&&n(pe.slice(0,1)),I(!1)))}).catch(pe=>{le.signal.aborted||pe.message.includes("aborted")||wi({color:"red",message:Oi(pe)})})},[a,n,r]),Be=yo(()=>{te.current&&(te.current.abort(),v(void 0)),me.current!==void 0&&window.clearTimeout(me.current);let Z=window.setTimeout(()=>R(),100);y(Z)},[R]),ye=yo(Z=>{let le=[],pe=[];for(let qo of Z){let mt=C.current?.find(qs=>qs.value===qo),Uo=mt?.resource;!Uo&&s!==!1&&f&&(Uo=f(qo),mt=r(Uo)),Uo&&le.push(Uo),mt&&pe.push(mt)}n(le),b(pe)},[s,n,f,r]),to=yo(Z=>{Z.key==="Enter"&&(!me.current&&!te.current?(N(Z),C.current&&C.current.length>0&&(q(C.current.slice(0,1)),ye([C.current[0].value]))):I(!0))},[ye]),k=yo(Z=>{let le=r(f(Z));return q([...C.current,le]),le},[f,q,r]),W=yo((Z,le)=>!le,[]);return Fi(()=>()=>{te.current&&te.current.abort()},[]),Pn.createElement(Mi,{...l,ref:u,defaultValue:i.map(t),searchable:!0,onKeyDown:to,onSearchChange:Be,data:[...H,...x],onFocus:R,onChange:ye,onCreate:k,rightSectionWidth:40,rightSection:A?Pn.createElement(Ai,{size:16}):null,filter:W,creatable:!0})}function Ei(e){return e?Array.isArray(e)?e:[e]:[]}var Ui=Li(()=>({searchInput:{input:{width:220,transition:"width 0.2s"},"input:focus":{width:400},"@media (max-width: 800px)":{input:{width:150},"input:focus":{width:150}}}}));function Gi(e){return e.id}function Qi(e){return{value:e.id,label:An(e),resource:e}}function Mn(e){let{classes:o}=Ui(),t=Qe(),r=P(),a=kn(async(f,s)=>{let l=Wi(f),i={signal:s},u=await r.graphql(l,void 0,void 0,i);return Xi(u,f)},[r]),n=kn(f=>{f.length>0&&t(`/${Hi(f[0])}`)},[t]);return We.createElement(So,{key:`${e.pathname}?${e.searchParams}`,size:"sm",radius:"md",className:o.searchInput,icon:We.createElement(Ur,{size:16}),placeholder:"Search",itemComponent:zi,toKey:Gi,toOption:Qi,onChange:n,loadOptions:a,maxSelectedValues:0,clearSearchOnChange:!0,clearable:!1})}var zi=qi(({resource:e,...o},t)=>{let r;return e.resourceType==="Patient"?r=e.birthDate:e.resourceType==="ServiceRequest"&&(r=e.subject?.display),We.createElement("div",{ref:t,...o},We.createElement(Ri,{noWrap:!0},We.createElement(Ce,{value:e}),We.createElement("div",null,We.createElement(Dn,null,An(e)),We.createElement(Dn,{size:"xs",color:"dimmed"},r))))});function Wi(e){let o=JSON.stringify(e);return Vi(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 Za from"react";function Ya
61
61
  display
62
62
  }
63
63
  }
64
- }`.replace(/\s+/g," ")}function Qi(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),Wi(zi(t),o).slice(0,5)}function zi(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 Wi(e,o){return e.sort((t,r)=>Pn(r,o)-Pn(t,o))}function Pn(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(Ei(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 Zi=Ji(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 Mn(e){let o=zo(),{medplum:t,profile:r,navigate:a}=o,n=t.getLogins(),{classes:f,cx:l}=Zi(),[s,i]=_i(!1);return Q.createElement($i,{height:60,p:8,style:{zIndex:101}},Q.createElement(vt,{position:"apart"},Q.createElement(vt,{spacing:"xs"},Q.createElement(Bn,{className:f.logoButton,onClick:e.navbarToggle},e.logo),Q.createElement(Tn,{pathname:e.pathname,searchParams:e.searchParams})),Q.createElement(He,{width:260,shadow:"xl",position:"bottom-end",transitionProps:{transition:"pop-top-right"},opened:s,onClose:()=>i(!1)},Q.createElement(He.Target,null,Q.createElement(Bn,{className:l(f.user,{[f.userActive]:s}),onClick:()=>i(u=>!u)},Q.createElement(vt,{spacing:7},Q.createElement(Ce,{value:r,radius:"xl",size:24}),Q.createElement(jo,{size:"sm",className:f.userName},ji(r?.name?.[0])),Q.createElement(Dr,{size:12,stroke:1.5})))),Q.createElement(He.Dropdown,null,Q.createElement(Ki,{align:"center",p:"xl"},Q.createElement(Ce,{size:"xl",radius:100,value:o.profile}),Q.createElement(yt,{value:o.profile?.name?.[0]}),Q.createElement(jo,{color:"dimmed",size:"xs"},t.getActiveLogin()?.project.display)),n.length>1&&Q.createElement(He.Divider,null),n.map(u=>u.profile.reference!==An(o.profile)&&Q.createElement(He.Item,{key:u.profile.reference,onClick:()=>{t.setActiveLogin(u).then(()=>window.location.reload()).catch(console.log)}},Q.createElement(vt,null,Q.createElement(Xi,{radius:"xl"}),Q.createElement("div",{style:{flex:1}},Q.createElement(jo,{size:"sm",weight:500},u.profile.display),Q.createElement(jo,{color:"dimmed",size:"xs"},u.project.display))))),Q.createElement(He.Divider,null),Q.createElement(He.Item,{icon:Q.createElement(Qr,{size:14,stroke:1.5}),onClick:()=>a("/signin")},"Add another account"),Q.createElement(He.Item,{icon:Q.createElement(ho,{size:14,stroke:1.5}),onClick:()=>a(`/${An(r)}`)},"Account settings"),Q.createElement(He.Item,{icon:Q.createElement(Lr,{size:14,stroke:1.5}),onClick:async()=>{await t.signOut(),a("/signin")}},"Sign out"),Q.createElement(jo,{size:"xs",color:"dimmed",align:"center"},e.version)))))}import{Button as Cu,createStyles as vu,Navbar as jr,ScrollArea as Su,Space as bu,Text as Pu}from"@mantine/core";import fe,{useState as Du}from"react";import{Button as tu,Group as ru,Modal as au,NativeSelect as nu,Stack as fu,TextInput as lu}from"@mantine/core";import{showNotification as wn}from"@mantine/notifications";import{deepClone as su,normalizeErrorString as iu}from"@medplum/core";import Xe from"react";import ou from"react";function Fn(e){let o={};for(let t of Array.from(e.elements))t instanceof HTMLInputElement?Yi(o,t):t instanceof HTMLTextAreaElement?o[t.name]=t.value:t instanceof HTMLSelectElement&&eu(o,t);return o}function Yi(e,o){o.disabled||(o.type==="checkbox"||o.type==="radio")&&!o.checked||(e[o.name]=o.value)}function eu(e,o){e[o.name]=o.value}function $(e){return ou.createElement("form",{style:e.style,"data-testid":e.testid,onSubmit:o=>{o.preventDefault();let t=Fn(o.target);e.onSubmit&&e.onSubmit(t)}},e.children)}function On(e){let o=P(),t=o.getUserConfiguration();function r(a){let{menuname:n,bookmarkname:f}=a,l=`${e.pathname}?${e.searchParams.toString()}`,s=su(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"}),wn({color:"green",message:"Success"}),e.onOk()}).catch(u=>{wn({color:"red",message:iu(u)})})}return Xe.createElement(au,{title:"Add Bookmark",closeButtonProps:{"aria-label":"Close"},opened:e.visible,onClose:e.onCancel},Xe.createElement($,{onSubmit:r},Xe.createElement(fu,null,Xe.createElement(uu,{config:t}),Xe.createElement(lu,{label:"Bookmark Name",type:"text",name:"bookmarkname",placeholder:"bookmark name",withAsterisk:!0}),Xe.createElement(ru,{position:"right"},Xe.createElement(tu,{mt:"sm",type:"submit"},"OK")))))}function uu(e){function o(r){return r?.menu?.map(a=>a.title)}let t=o(e.config);return Xe.createElement(nu,{name:"menuname",defaultValue:t[0],label:"Select Menu Option",placeholder:"Menu",data:t,withAsterisk:!0})}import Iu,{useState as gu}from"react";import du,{useCallback as cu}from"react";function Kr(e){return typeof e.code=="string"?e.code:JSON.stringify(e)}function mu(e){return typeof e.display=="string"?e.display:Kr(e)}function pu(e){return{value:Kr(e),label:mu(e),resource:e}}function xu(e){return{code:e,display:e}}function Je(e){let o=P(),{elementDefinition:t,creatable:r,clearable:a,...n}=e,f=cu(async(l,s)=>{if(!t.binding)return[];let i=t.binding.valueSet,d=(await o.searchValueSet(i,l,{signal:s})).expansion?.contains,c=[];for(let g of d)g.code&&!c.some(y=>y.code===g.code)&&c.push(g);return c},[o,t]);return du.createElement(bo,{...n,creatable:r??!0,clearable:a??!0,toKey:Kr,toOption:pu,loadOptions:f,onCreate:xu,getCreateLabel:r===!1?void 0:l=>`+ Create ${l}`})}function St(e){let[o,t]=gu(e.defaultValue);function r(a){let n=a[0],f=yu(n);t(f),e.onChange&&e.onChange(f)}return Iu.createElement(Je,{elementDefinition:e.property,name:e.name,placeholder:e.placeholder,defaultValue:hu(o),onChange:r,creatable:e.creatable,maxSelectedValues:e.maxSelectedValues??1,clearSearchOnChange:e.clearSearchOnChange,clearable:e.clearable})}function hu(e){return e?{code:e}:void 0}function yu(e){return e?.code}var En=vu(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 Ln(e){let{classes:o}=En(),t=Qe(),r=Bu(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 fe.createElement(fe.Fragment,null,fe.createElement(jr,{width:{sm:250},p:"xs"},fe.createElement(Su,null,fe.createElement(jr.Section,{mb:"sm"},fe.createElement(St,{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})),fe.createElement(jr.Section,{grow:!0},e.menus?.map(s=>fe.createElement(fe.Fragment,{key:`menu-${s.title}`},fe.createElement(Pu,{className:o.menuTitle},s.title),s.links?.map(i=>fe.createElement(ku,{key:i.href,to:i.href,active:i.href===r?.href,onClick:u=>f(u,i.href)},fe.createElement(Tu,{to:i.href,icon:i.icon}),fe.createElement("span",null,i.label))))),e.displayAddBookmark&&fe.createElement(Cu,{variant:"subtle",size:"xs",mt:"xl",leftIcon:fe.createElement(Vr,{size:"0.75rem"}),onClick:()=>n(!0)},"Add Bookmark")))),e.pathname&&e.searchParams&&fe.createElement(On,{pathname:e.pathname,searchParams:e.searchParams,visible:a,onOk:()=>n(!1),onCancel:()=>n(!1)}))}function ku(e){let{classes:o,cx:t}=En();return fe.createElement(se,{onClick:e.onClick,to:e.to,className:t(o.link,{[o.linkActive]:e.active})},e.children)}function Tu(e){return e.icon?e.icon:fe.createElement(bu,{w:30})}function Bu(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=Au(e,o,f.href);l>a&&(a=l,r=f)}return r}function Au(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 db(e){let o=Fu(),[t,r]=Ou(localStorage.navbarOpen==="true"),a=P(),n=xt();function f(i){localStorage.navbarOpen=i.toString(),r(i)}function l(){f(!1)}function s(){f(!t)}return a.isLoading()?fo.createElement(Jr,null):fo.createElement(Mu,{styles:{main:{background:o.colorScheme==="dark"?o.colors.dark[8]:o.colors.gray[0]}},padding:0,fixed:!0,header:n&&fo.createElement(Mn,{pathname:e.pathname,searchParams:e.searchParams,logo:e.logo,version:e.version,navbarToggle:s}),navbar:n&&t?fo.createElement(Ln,{pathname:e.pathname,searchParams:e.searchParams,menus:e.menus,closeNavbar:l,displayAddBookmark:e.displayAddBookmark}):void 0},fo.createElement(yo,{key:`${e.pathname}?${e.searchParams?.toString()}`},fo.createElement(wu,{fallback:fo.createElement(Jr,null)},e.children)))}import _r from"react";import{Anchor as Eu}from"@mantine/core";import $e from"react";function Le(e){let o=e.value,{contentType:t,url:r,title:a}=o??{};return r?$e.createElement("div",{"data-testid":"attachment-display"},t?.startsWith("image/")&&$e.createElement("img",{"data-testid":"attachment-image",style:{maxWidth:e.maxWidth},src:r,alt:o?.title}),t?.startsWith("video/")&&$e.createElement("video",{"data-testid":"attachment-video",style:{maxWidth:e.maxWidth},controls:!0},$e.createElement("source",{type:t,src:r})),t==="application/pdf"&&!a?.endsWith(".pdf")&&$e.createElement("div",{"data-testid":"attachment-pdf",style:{maxWidth:e.maxWidth,minHeight:400}},$e.createElement("iframe",{width:"100%",height:"400",src:r+"#navpanes=0",allowFullScreen:!0,frameBorder:0,seamless:!0})),$e.createElement("div",{"data-testid":"download-link",style:{padding:"2px 16px 16px 16px"}},$e.createElement(Eu,{href:o?.url,"data-testid":"attachment-details",target:"_blank",rel:"noopener noreferrer"},o?.title||"Download"))):null}function Rn(e){return _r.createElement("div",null,e.values?.map((o,t)=>_r.createElement("div",{key:"attatchment-"+t},_r.createElement(Le,{value:o,maxWidth:e.maxWidth}))))}import{ActionIcon as Nn}from"@mantine/core";import ie,{useRef as Ru,useState as Nu}from"react";import Zr,{useRef as Lu}from"react";function Po(e){let o=P(),t=Lu(null);function r(f){N(f),t.current?.click()}function a(f){N(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 Zr.createElement(Zr.Fragment,null,Zr.createElement("input",{type:"file","data-testid":"upload-file-input",style:{display:"none"},ref:t,onChange:f=>a(f)}),e.children({onClick:r}))}function Hn(e){let[o,t]=Nu(e.defaultValue??[]),r=Ru();r.current=o;function a(n){t(n),e.onChange&&e.onChange(n)}return ie.createElement("table",{style:{width:"100%"}},ie.createElement("colgroup",null,ie.createElement("col",{width:"97%"}),ie.createElement("col",{width:"3%"})),ie.createElement("tbody",null,o.map((n,f)=>ie.createElement("tr",{key:`${f}-${o.length}`},ie.createElement("td",null,ie.createElement(Le,{value:n,maxWidth:200})),ie.createElement("td",null,ie.createElement(Nn,{title:"Remove",size:"sm",onClick:l=>{N(l);let s=o.slice();s.splice(f,1),a(s)}},ie.createElement(ze,null))))),ie.createElement("tr",null,ie.createElement("td",null),ie.createElement("td",null,ie.createElement(Po,{onUpload:n=>{a([...r.current,n])}},n=>ie.createElement(Nn,{...n,title:"Add",size:"sm",color:"green"},ie.createElement(Xo,{size:16})))))))}import{Button as Vn}from"@mantine/core";import Do,{useState as Hu}from"react";function bt(e){let[o,t]=Hu(e.defaultValue);function r(a){t(a),e.onChange&&e.onChange(a)}return o?Do.createElement(Do.Fragment,null,Do.createElement(Le,{value:o,maxWidth:200}),Do.createElement(Vn,{onClick:a=>{N(a),r(void 0)}},"Remove")):Do.createElement(Po,{onUpload:r},a=>Do.createElement(Vn,{...a},"Upload..."))}import{getPropertyDisplayName as rd,globalSchema as ad}from"@medplum/core";import et from"react";var Pt=["meta","implicitRules","language","text","contained","extension","modifierExtension"];import{createStyles as Vu}from"@mantine/core";import _o from"react";var qu=Vu(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 qn(e){let{children:o,compact:t}=e,{classes:r,cx:a}=qu();return _o.createElement("dl",{className:a(r.root,{[r.compact]:t})},o)}function Un(e){return _o.createElement(_o.Fragment,null,_o.createElement("dt",null,e.term),_o.createElement("dd",null,e.children))}import{ActionIcon as $u,Box as Ku,CopyButton as ju,Tooltip as _u}from"@mantine/core";import{formatDateTime as Zu,formatPeriod as Yu,formatTiming as ed,getElementDefinitionTypeName as od,getTypedPropertyValue as td,PropertyType as V}from"@medplum/core";import O from"react";import{formatCodeableConcept as Uu}from"@medplum/core";import Gn from"react";function ko(e){return Gn.createElement(Gn.Fragment,null,Uu(e.value))}import{formatCoding as Gu}from"@medplum/core";import Qn from"react";function zn(e){return Qn.createElement(Qn.Fragment,null,Gu(e.value))}import Yr from"react";import Wn from"react";function Dt(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("]")),Wn.createElement(Wn.Fragment,null,t.join("").trim())}function Xn(e){let o=e.value;return o?Yr.createElement(Yr.Fragment,null,o.name,o.name&&": ",o.telecom?.map(t=>Yr.createElement(Dt,{key:`telecom-${o.name}-${t.value}`,value:t}))):null}import Qu from"react";function Jn(e){return Qu.createElement("div",null,e.value?.system,": ",e.value?.value)}import{formatMoney as zu}from"@medplum/core";import $n from"react";function Kn(e){return $n.createElement($n.Fragment,null,zu(e.value))}import{formatQuantity as Wu}from"@medplum/core";import jn from"react";function Zo(e){return jn.createElement(jn.Fragment,null,Wu(e.value))}import{formatRange as Xu}from"@medplum/core";import _n from"react";function kt(e){return _n.createElement(_n.Fragment,null,Xu(e.value))}import Tt from"react";function Zn(e){let o=e.value;return o?Tt.createElement(Tt.Fragment,null,Tt.createElement(Zo,{value:o.numerator}),"\xA0/\xA0",Tt.createElement(Zo,{value:o.denominator})):null}import{stringify as Ju}from"@medplum/core";import ea from"react";function lo(e){if(!e.value)return null;let o=e.value.display||e.value.reference||Ju(e.value);return e.link!==!1&&e.value.reference?ea.createElement(se,{to:e.value},o):ea.createElement(ea.Fragment,null,o)}import Bt from"react";function Yn(e){let o=e.property,t=e.values??[],r=o.type?.[0]?.code;return Bt.createElement(Bt.Fragment,null,t.map((a,n)=>Bt.createElement("div",{key:`${n}-${t.length}`},Bt.createElement(xe,{arrayElement:!0,property:o,propertyType:r,value:a,ignoreMissingValues:e.ignoreMissingValues,link:e.link}))))}function xe(e){let{property:o,propertyType:t,value:r}=e;if(o?.path?.endsWith(".id"))return O.createElement(Ku,{component:"div",sx:{display:"flex",gap:3,alignItems:"center"}},r,O.createElement(ju,{value:r,timeout:2e3},({copied:n,copy:f})=>O.createElement(_u,{label:n?"Copied":"Copy",withArrow:!0,position:"right"},O.createElement($u,{color:n?"teal":"gray",onClick:f},n?O.createElement(Wo,{size:"1rem"}):O.createElement(Tr,{size:"1rem"})))));if(o?.max==="*"&&!e.arrayElement)return t===V.Attachment?O.createElement(Rn,{values:r,maxWidth:e.maxWidth}):O.createElement(Yn,{property:o,values:r,ignoreMissingValues:e.ignoreMissingValues,link:e.link});switch(t){case V.boolean:return O.createElement(O.Fragment,null,r===void 0?"":(!!r).toString());case V.SystemString:case V.string:return O.createElement("div",{style:{whiteSpace:"pre-wrap"}},r);case V.code:case V.date:case V.decimal:case V.integer:case V.positiveInt:case V.unsignedInt:case V.uri:case V.url:return O.createElement(O.Fragment,null,r);case V.canonical:return O.createElement(lo,{value:{reference:r},link:e.link});case V.dateTime:case V.instant:return O.createElement(O.Fragment,null,Zu(r));case V.markdown:return O.createElement("pre",null,r);case V.Address:return O.createElement(Ya,{value:r});case V.Annotation:return O.createElement(O.Fragment,null,r?.text);case V.Attachment:return O.createElement(Le,{value:r,maxWidth:e.maxWidth});case V.CodeableConcept:return O.createElement(ko,{value:r});case V.Coding:return O.createElement(zn,{value:r});case V.ContactDetail:return O.createElement(Xn,{value:r});case V.ContactPoint:return O.createElement(Dt,{value:r});case V.HumanName:return O.createElement(yt,{value:r});case V.Identifier:return O.createElement(Jn,{value:r});case V.Money:return O.createElement(Kn,{value:r});case V.Period:return O.createElement(O.Fragment,null,Yu(r));case V.Quantity:case V.Duration:return O.createElement(Zo,{value:r});case V.Range:return O.createElement(kt,{value:r});case V.Ratio:return O.createElement(Zn,{value:r});case V.Reference:return O.createElement(lo,{value:r,link:e.link});case V.Timing:return O.createElement(O.Fragment,null,ed(r));case V.Dosage:case V.UsageContext:return O.createElement(Yo,{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 O.createElement(Yo,{value:{type:od(o),value:r},compact:!0,ignoreMissingValues:e.ignoreMissingValues})}}function Pe(e,o){let t=td(e,o);return t?Array.isArray(t)?[t.map(r=>r.value),t[0].type]:[t.value,t.type]:[void 0,"undefined"]}function Yo(e){let o=e.value,t=o.value;if(!t)return null;let r=o.type,a=ad.types[r];return a?typeof t=="object"&&"name"in t&&Object.keys(t).length===1&&typeof t.name=="string"?et.createElement("div",null,t.name):et.createElement(qn,{compact:e.compact},Object.entries(a.properties).map(n=>{let f=n[0];if(Pt.includes(f))return null;let l=n[1];l.path||(l.path=r+"."+f);let[s,i]=Pe(o,f);return e.ignoreMissingValues&&(!s||Array.isArray(s)&&s.length===0)?null:et.createElement(Un,{key:f,term:rd(f)},et.createElement(xe,{property:l,propertyType:i,value:s,ignoreMissingValues:e.ignoreMissingValues,link:e.link}))})):et.createElement("div",null,r,"\xA0not implemented")}import{Stack as Hc}from"@mantine/core";import{getPropertyDisplayName as Ff,globalSchema as Vc}from"@medplum/core";import Ao,{useState as qc}from"react";import{Group as nd,Input as fd}from"@mantine/core";import At from"react";function Mt(e){return At.createElement(nd,{noWrap:!0},At.createElement("div",null,e.children),At.createElement("div",null,At.createElement(fd.Wrapper,{id:e.htmlFor,label:e.title,description:e.description,withAsterisk:e.withAsterisk},(()=>null)())))}import{Input as ld}from"@mantine/core";import sd from"react";function Ie(e,o){return e?.issue?.filter(t=>ef(t.expression?.[0],o))?.map(t=>t.details?.text)?.join(`
65
- `)}function Ft(e,o){return e?.issue?.filter(t=>ef(t.expression?.[0],o))}function ef(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 De(e){return sd.createElement(ld.Wrapper,{id:e.htmlFor,label:e.title,description:e.description,withAsterisk:e.withAsterisk,error:Ie(e.outcome,e.htmlFor)},e.children)}import{Button as of,Group as id,Stack as ud,TextInput as tf}from"@mantine/core";import{capitalize as dd,deepClone as cd}from"@medplum/core";import Me,{useEffect as md,useState as rf}from"react";function iD(e){let o=P(),t=X(e.defaultValue),[r,a]=rf(),[n,f]=rf();return md(()=>{t&&(f(cd(t)),o.requestSchema(t.resourceType).then(a).catch(console.log))},[o,t]),!r||!n?Me.createElement("div",null,"Loading..."):Me.createElement("form",{noValidate:!0,autoComplete:"off",onSubmit:l=>{l.preventDefault(),e.onSubmit&&e.onSubmit(n)}},Me.createElement(ud,{mb:"xl"},Me.createElement(De,{title:"Resource Type",htmlFor:"resourceType",outcome:e.outcome},Me.createElement(tf,{name:"resourceType",defaultValue:n.resourceType,disabled:!0})),Me.createElement(De,{title:"ID",htmlFor:"id",outcome:e.outcome},Me.createElement(tf,{name:"id",defaultValue:n.id,disabled:!0}))),Me.createElement(tt,{typeName:n.resourceType,defaultValue:n,outcome:e.outcome,onChange:f}),Me.createElement(id,{position:"right",mt:"xl"},Me.createElement(of,{type:"submit"},"OK"),e.onDelete&&Me.createElement(of,{variant:"outline",color:"red",type:"button",onClick:()=>{e.onDelete(n)}},"Delete")))}function ot(e,o,t,r,a){let n=r.type;if(n.length>1)for(let f of n){let l=o.replace("[x]",dd(f.code));l in e&&delete e[l]}return e[t]=a,e}import{Checkbox as Ac,Group as Mc,NativeSelect as Fc,Textarea as wc,TextInput as ia}from"@mantine/core";import{capitalize as Oc,getElementDefinitionTypeName as Ec,PropertyType as E}from"@medplum/core";import G,{useState as Lc}from"react";import pd,{useState as xd}from"react";function af(e){let[o,t]=xd(e.defaultValue);function r(a){let n=gd(a);t(n),e.onChange&&e.onChange(n)}return pd.createElement(Je,{elementDefinition:e.property,name:e.name,placeholder:e.placeholder,defaultValue:o&&Id(o),maxSelectedValues:1,onChange:r})}function Id(e){return e.coding?.map(o=>({system:o.system,code:o.code,display:o.display}))}function gd(e){if(e.length!==0)return{coding:e.map(o=>({system:o.system,code:o.code,display:o.display}))}}import hd,{useState as yd}from"react";function nf(e){let[o,t]=yd(e.defaultValue);function r(a){let n=a[0],f=n&&vd(n);t(f),e.onChange&&e.onChange(f)}return hd.createElement(Je,{elementDefinition:e.property,name:e.name,placeholder:e.placeholder,defaultValue:o&&Cd(o),maxSelectedValues:1,onChange:r})}function Cd(e){return{system:e.system,code:e.code,display:e.display}}function vd(e){return{system:e.system,code:e.code,display:e.display}}import{Group as kd,TextInput as Td}from"@mantine/core";import oa,{useRef as Bd,useState as Ad}from"react";import{Group as Sd,NativeSelect as ff,TextInput as bd}from"@mantine/core";import wt,{useRef as Pd,useState as Dd}from"react";function Ot(e){let[o,t]=Dd(e.defaultValue),r=Pd();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 wt.createElement(Sd,{spacing:"xs",grow:!0,noWrap:!0},wt.createElement(ff,{"data-testid":"system",defaultValue:o?.system,onChange:s=>n(s.currentTarget.value),data:["","email","phone","fax","pager","sms","other"]}),wt.createElement(ff,{"data-testid":"use",defaultValue:o?.use,onChange:s=>f(s.currentTarget.value),data:["","home","work","temp","old","mobile"]}),wt.createElement(bd,{placeholder:"Value",defaultValue:o?.value,onChange:s=>l(s.currentTarget.value)}))}function lf(e){let[o,t]=Ad(e.defaultValue),r=Bd();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 oa.createElement(kd,{spacing:"xs",grow:!0,noWrap:!0},oa.createElement(Td,{"data-testid":e.name+"-name",name:e.name+"-name",placeholder:"Name",style:{width:180},defaultValue:o?.name,onChange:l=>n(l.currentTarget.value)}),oa.createElement(Ot,{name:e.name+"-telecom",defaultValue:o?.telecom?.[0],onChange:f}))}import{TextInput as Md}from"@mantine/core";import{isValidDate as sf}from"@medplum/core";import Fd from"react";function Fe(e){return Fd.createElement(Md,{id:e.name,name:e.name,"data-autofocus":e.autoFocus,"data-testid":e.name,placeholder:e.placeholder,required:e.required,type:Ed(),defaultValue:wd(e.defaultValue),autoFocus:e.autoFocus,error:Ie(e.outcome,e.name),onChange:o=>{if(e.onChange){let t=o.currentTarget.value;e.onChange(Od(t))}}})}function wd(e){if(!e)return"";let o=new Date(e);return sf(o)?o.toLocaleDateString("sv")+"T"+o.toLocaleTimeString("sv"):""}function Od(e){if(!e)return"";let o=new Date(e);return sf(o)?o.toISOString():""}function Ed(){return"datetime-local"}import{JsonInput as Ld}from"@mantine/core";import{stringify as Rd}from"@medplum/core";import Nd from"react";function uf(e){return Nd.createElement(Ld,{id:e.name,name:e.name,"data-testid":"extension-input",defaultValue:Rd(e.defaultValue),deserialize:JSON.parse,onChange:o=>{e.onChange&&e.onChange(JSON.parse(o))}})}import{Group as Hd,NativeSelect as Vd,TextInput as Et}from"@mantine/core";import To,{useRef as qd,useState as Ud}from"react";function df(e){let[o,t]=Ud(e.defaultValue),r=qd();r.current=o;function a(u){t(u),e.onChange&&e.onChange(u)}function n(u){a({...r.current,use:u||void 0})}function f(u){a({...r.current,prefix:u?u.split(" "):void 0})}function l(u){a({...r.current,given:u?u.split(" "):void 0})}function s(u){a({...r.current,family:u||void 0})}function i(u){a({...r.current,suffix:u?u.split(" "):void 0})}return To.createElement(Hd,{spacing:"xs",grow:!0,noWrap:!0},To.createElement(Vd,{defaultValue:o?.use,name:e.name+"-use","data-testid":"use",onChange:u=>n(u.currentTarget.value),data:["","temp","old","usual","official","nickname","anonymous","maiden"]}),To.createElement(Et,{placeholder:"Prefix",name:e.name+"-prefix",defaultValue:o?.prefix?.join(" "),onChange:u=>f(u.currentTarget.value)}),To.createElement(Et,{placeholder:"Given",name:e.name+"-given",defaultValue:o?.given?.join(" "),onChange:u=>l(u.currentTarget.value)}),To.createElement(Et,{name:e.name+"-family",placeholder:"Family",defaultValue:o?.family,onChange:u=>s(u.currentTarget.value)}),To.createElement(Et,{placeholder:"Suffix",name:e.name+"-suffix",defaultValue:o?.suffix?.join(" "),onChange:u=>i(u.currentTarget.value)}))}import{Group as Gd,TextInput as cf}from"@mantine/core";import ta,{useState as Qd}from"react";function mf(e){let[o,t]=Qd(e.defaultValue);function r(a){t(a),e.onChange&&e.onChange(a)}return ta.createElement(Gd,{spacing:"xs",grow:!0,noWrap:!0},ta.createElement(cf,{placeholder:"System",defaultValue:o?.system,onChange:a=>r({...o,system:a.currentTarget.value})}),ta.createElement(cf,{placeholder:"Value",defaultValue:o?.value,onChange:a=>r({...o,value:a.currentTarget.value})}))}import{NativeSelect as zd,TextInput as Wd}from"@mantine/core";import ra,{useCallback as aa,useState as Xd}from"react";var Jd=["USD","EUR","CAD","GBP","AUD"];function pf(e){let{onChange:o}=e,[t,r]=Xd(e.defaultValue),a=aa(s=>{r(s),o&&o(s)},[o]),n=aa(s=>{a({...t,currency:s.currentTarget.value})},[t,a]),f=aa(s=>{a({...t,value:s.currentTarget.valueAsNumber})},[t,a]),l=ra.createElement(zd,{defaultValue:t?.currency,data:Jd,styles:{input:{fontWeight:500,borderTopLeftRadius:0,borderBottomLeftRadius:0,width:92}},onChange:n});return ra.createElement(Wd,{type:"number",label:e.label,placeholder:e.placeholder??"Value",defaultValue:t?.value?.toString()??"USD",icon:ra.createElement(Br,{size:14}),rightSection:l,rightSectionWidth:92,onChange:f})}import{Group as $d}from"@mantine/core";import na,{useState as Kd}from"react";function xf(e){let[o,t]=Kd(e.defaultValue);function r(a){t(a),e.onChange&&e.onChange(a)}return na.createElement($d,{spacing:"xs",grow:!0,noWrap:!0},na.createElement(Fe,{name:e.name+".start",placeholder:"Start",defaultValue:o?.start,onChange:a=>r({...o,start:a})}),na.createElement(Fe,{name:e.name+".end",placeholder:"End",defaultValue:o?.end,onChange:a=>r({...o,end:a})}))}import{Group as jd,NativeSelect as _d,TextInput as If}from"@mantine/core";import Lt,{useState as Zd}from"react";function ke(e){let[o,t]=Zd(e.defaultValue);function r(a){t(a),e.onChange&&e.onChange(a)}return Lt.createElement(jd,{spacing:"xs",grow:!0,noWrap:!0},Lt.createElement(_d,{style:{width:80},"data-testid":e.name+"-comparator",defaultValue:o?.comparator,data:["","<","<=",">=",">"],onChange:a=>r({...o,comparator:a.currentTarget.value})}),Lt.createElement(If,{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:Yd(a.currentTarget.value)})}}),Lt.createElement(If,{placeholder:"Unit","data-testid":e.name+"-unit",defaultValue:o?.unit,onChange:a=>r({...o,unit:a.currentTarget.value})}))}function Yd(e){if(e)return parseFloat(e)}import{Group as ec}from"@mantine/core";import fa,{useState as oc}from"react";function rt(e){let[o,t]=oc(e.defaultValue);function r(a){t(a),e.onChange&&e.onChange(a)}return fa.createElement(ec,{spacing:"xs",grow:!0,noWrap:!0},fa.createElement(ke,{name:e.name+"-low",defaultValue:o?.low,onChange:a=>r({...o,low:a})}),fa.createElement(ke,{name:e.name+"-high",defaultValue:o?.high,onChange:a=>r({...o,high:a})}))}import{Group as tc}from"@mantine/core";import la,{useState as rc}from"react";function gf(e){let[o,t]=rc(e.defaultValue);function r(a){t(a),e.onChange&&e.onChange(a)}return la.createElement(tc,{spacing:"xs",grow:!0,noWrap:!0},la.createElement(ke,{name:e.name+"-numerator",defaultValue:o?.numerator,onChange:a=>r({...o,numerator:a})}),la.createElement(ke,{name:e.name+"-denominator",defaultValue:o?.denominator,onChange:a=>r({...o,denominator:a})}))}import{Group as mc,NativeSelect as pc,TextInput as xc}from"@mantine/core";import{createReference as Ic}from"@medplum/core";import Nt,{useRef as vf,useState as Sf}from"react";import{Group as ac,Text as hf}from"@mantine/core";import{getDisplayString as nc,getReferenceString as Cf}from"@medplum/core";import so,{forwardRef as fc,useCallback as yf,useState as lc}from"react";var sc={Observation:"code",User:"email:contains"},ic=["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 uc(e){return{value:Cf(e),label:nc(e),resource:e}}function Rt(e){let o=P(),t=e.resourceType,[r,a]=lc(),n=X(e.defaultValue,a),f=e.onChange,l=yf(async(i,u)=>{let d=cc(t),c=new URLSearchParams({[d]:i,_count:"10"});return await o.searchResources(t,c,{signal:u})},[o,t]),s=yf(i=>{f&&f(i[0])},[f]);return e.defaultValue&&!r&&!n?null:so.createElement(bo,{name:e.name,itemComponent:dc,defaultValue:n,placeholder:e.placeholder,maxSelectedValues:1,toKey:Cf,toOption:uc,loadOptions:l,onChange:s,clearable:!0})}var dc=fc(({label:e,resource:o,...t},r)=>so.createElement("div",{ref:r,...t},so.createElement(ac,{noWrap:!0},so.createElement(Ce,{value:o}),so.createElement("div",null,so.createElement(hf,null,e),so.createElement(hf,{size:"xs",color:"dimmed"},o.birthDate)))));function cc(e){return sc[e]??(ic.includes(e)?"name":"_id")}function Bo(e){let o=gc(e.targetTypes),t=hc(e.defaultValue,o),[r,a]=Sf(e.defaultValue),[n,f]=Sf(t),l=vf();l.current=r;let s=vf();s.current=n;function i(u){a(u),e.onChange&&e.onChange(u)}return Nt.createElement(mc,{spacing:"xs",grow:!0,noWrap:!0},o?Nt.createElement(pc,{"data-autofocus":e.autoFocus,"data-testid":"reference-input-resource-type-select",defaultValue:n,autoFocus:e.autoFocus,onChange:u=>f(u.currentTarget.value),data:o}):Nt.createElement(xc,{"data-autofocus":e.autoFocus,"data-testid":"reference-input-resource-type-input",defaultValue:n,autoFocus:e.autoFocus,onChange:u=>f(u.currentTarget.value)}),Nt.createElement(Rt,{resourceType:n,name:e.name+"-id",placeholder:e.placeholder,defaultValue:r,onChange:u=>{i(u?Ic(u):void 0)}}))}function gc(e){if(!(!e||e.length===0||e.length===1&&e[0]==="Resource"))return e}function hc(e,o){let t=e?.reference?.split("/")[0];if(t)return t;if(o&&o.length>0)return o[0]}import{ActionIcon as bf}from"@mantine/core";import ge,{useRef as yc,useState as Cc}from"react";function Pf(e){let[o,t]=Cc(e.defaultValue&&Array.isArray(e.defaultValue)?e.defaultValue:[]),r=yc();r.current=o;function a(n){t(n),e.onChange&&e.onChange(n)}return ge.createElement("table",{style:{width:"100%",borderCollapse:"collapse"}},ge.createElement("colgroup",null,ge.createElement("col",{width:"97%"}),ge.createElement("col",{width:"3%"})),ge.createElement("tbody",null,o.map((n,f)=>ge.createElement("tr",{key:`${f}-${o.length}`},ge.createElement("td",null,ge.createElement(Ve,{arrayElement:!0,property:e.property,name:e.name+"."+f,defaultValue:n,onChange:l=>{let s=[...r.current];s[f]=l,a(s)}})),ge.createElement("td",{style:{textAlign:"right"}},ge.createElement(bf,{title:"Remove",size:"sm",onClick:l=>{N(l);let s=[...r.current];s.splice(f,1),a(s)}},ge.createElement(ze,null))))),ge.createElement("tr",null,ge.createElement("td",null),ge.createElement("td",{style:{textAlign:"right"}},ge.createElement(bf,{title:"Add",size:"sm",color:"green",onClick:n=>{N(n);let f=[...r.current];f.push(void 0),a(f)}},ge.createElement(xo,null))))))}import{Button as Tf,Chip as Df,Group as Ht,Modal as vc,NativeSelect as Sc,Stack as bc,Switch as Pc,TextInput as Dc}from"@mantine/core";import{formatTiming as kc}from"@medplum/core";import K,{useRef as Bf,useState as sa}from"react";var Tc=["sun","mon","tue","wed","thu","fri","sat"];function Af(e){let[o,t]=sa(e.defaultValue),[r,a]=sa(!1),n=Bf();return n.current=o,K.createElement(K.Fragment,null,K.createElement(Ht,{spacing:"xs",grow:!0,noWrap:!0},K.createElement("span",null,kc(n.current)||"No repeat"),K.createElement(Tf,{onClick:()=>a(!0)},"Edit")),K.createElement(Bc,{visible:r,defaultValue:n.current,onOk:f=>{e.onChange&&e.onChange(f),t(f),a(!1)},onCancel:()=>a(!1)}))}var kf={repeat:{period:1,periodUnit:"d"}};function Bc(e){let[o,t]=sa(e.defaultValue||kf),r=Bf();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 K.createElement(vc,{title:"Timing",closeButtonProps:{"aria-label":"Close"},opened:e.visible,onClose:()=>e.onCancel()},K.createElement(bc,null,K.createElement(De,{title:"Starts on",htmlFor:"timing-dialog-start"},K.createElement(Fe,{name:"timing-dialog-start",onChange:i=>a(i)})),K.createElement(Pc,{label:"Repeat",checked:!!o.repeat,onChange:i=>n(i.currentTarget.checked?kf.repeat:void 0)}),o.repeat&&K.createElement(K.Fragment,null,K.createElement(De,{title:"Repeat every",htmlFor:"timing-dialog-period"},K.createElement(Ht,{spacing:"xs",grow:!0,noWrap:!0},K.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)}),K.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"&&K.createElement(De,{title:"Repeat on"},K.createElement(Df.Group,{multiple:!0,onChange:s},K.createElement(Ht,{position:"apart",mt:"md",spacing:"xs"},Tc.map(i=>K.createElement(Df,{key:i,value:i,size:"xs",radius:"xl"},i.charAt(0).toUpperCase())))))),K.createElement(Ht,{position:"right"},K.createElement(Tf,{onClick:()=>e.onOk(o)},"OK"))))}function Ve(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===E.Attachment?G.createElement(Hn,{name:r,defaultValue:a,onChange:e.onChange}):G.createElement(Pf,{property:o,name:r,defaultValue:a,onChange:e.onChange});let n=o.type;return n.length>1?G.createElement(Rc,{elementDefinitionTypes:n,...e}):G.createElement(Mf,{elementDefinitionType:n[0],...e})}function Rc(e){let o=e.elementDefinitionTypes,t;e.defaultPropertyType&&(t=o.find(n=>n.code===e.defaultPropertyType)),t||(t=o[0]);let[r,a]=Lc(t);return G.createElement(Mc,{spacing:"xs",grow:!0,noWrap:!0},G.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}))}),G.createElement(Mf,{...e,elementDefinitionType:r,onChange:n=>{e.onChange&&e.onChange(n,e.name.replace("[x]",Oc(r.code)))}}))}function Mf(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 E.SystemString:case E.canonical:case E.string:case E.time:case E.uri:case E.url:return G.createElement(ia,{id:r,name:r,"data-testid":r,defaultValue:a,required:n,onChange:f=>{e.onChange&&e.onChange(f.currentTarget.value)},error:Ie(e.outcome,r)});case E.date:return G.createElement(ia,{type:"date",id:r,name:r,"data-testid":r,defaultValue:a,required:n,onChange:f=>{e.onChange&&e.onChange(f.currentTarget.value)},error:Ie(e.outcome,r)});case E.dateTime:case E.instant:return G.createElement(Fe,{name:r,defaultValue:a,onChange:e.onChange,outcome:e.outcome});case E.decimal:case E.integer:case E.positiveInt:case E.unsignedInt:return G.createElement(ia,{type:"number",step:t===E.decimal?"any":"1",id:r,name:r,"data-testid":r,defaultValue:a,required:n,onChange:f=>{e.onChange&&e.onChange(f.currentTarget.valueAsNumber)}});case E.code:return G.createElement(St,{property:o,name:r,defaultValue:a,onChange:e.onChange});case E.boolean:return G.createElement(Ac,{id:r,name:r,"data-testid":r,defaultChecked:!!a,onChange:f=>{e.onChange&&e.onChange(f.currentTarget.checked)}});case E.markdown:return G.createElement(wc,{id:r,name:r,"data-testid":r,defaultValue:a,required:n,onChange:f=>{e.onChange&&e.onChange(f.currentTarget.value)}});case E.Address:return G.createElement(rn,{name:r,defaultValue:a,onChange:e.onChange});case E.Annotation:return G.createElement(fn,{name:r,defaultValue:a,onChange:e.onChange});case E.Attachment:return G.createElement(bt,{name:r,defaultValue:a,onChange:e.onChange});case E.CodeableConcept:return G.createElement(af,{property:o,name:r,defaultValue:a,onChange:e.onChange});case E.Coding:return G.createElement(nf,{property:o,name:r,defaultValue:a,onChange:e.onChange});case E.ContactDetail:return G.createElement(lf,{name:r,defaultValue:a,onChange:e.onChange});case E.ContactPoint:return G.createElement(Ot,{name:r,defaultValue:a,onChange:e.onChange});case E.Extension:return G.createElement(uf,{name:r,defaultValue:a,onChange:e.onChange});case E.HumanName:return G.createElement(df,{name:r,defaultValue:a,onChange:e.onChange});case E.Identifier:return G.createElement(mf,{name:r,defaultValue:a,onChange:e.onChange});case E.Money:return G.createElement(pf,{name:r,defaultValue:a,onChange:e.onChange});case E.Period:return G.createElement(xf,{name:r,defaultValue:a,onChange:e.onChange});case E.Duration:case E.Quantity:return G.createElement(ke,{name:r,defaultValue:a,onChange:e.onChange});case E.Range:return G.createElement(rt,{name:r,defaultValue:a,onChange:e.onChange});case E.Ratio:return G.createElement(gf,{name:r,defaultValue:a,onChange:e.onChange});case E.Reference:return G.createElement(Bo,{name:r,defaultValue:a,targetTypes:Nc(o),onChange:e.onChange});case E.Timing:return G.createElement(Af,{name:r,defaultValue:a,onChange:e.onChange});case E.Dosage:case E.UsageContext:return G.createElement(tt,{typeName:t,defaultValue:a,onChange:e.onChange,outcome:e.outcome});default:return G.createElement(tt,{typeName:Ec(o),defaultValue:a,onChange:e.onChange,outcome:e.outcome})}}function Nc(e){return e?.type?.[0]?.targetProfile?.map(o=>o.split("/").pop())}function tt(e){let[o,t]=qc(e.defaultValue??{});function r(l){t(l),e.onChange&&e.onChange(l)}let a=e.typeName,n=Vc.types[a];if(!n)return Ao.createElement("div",null,a,"\xA0not implemented");let f={type:a,value:o};return Ao.createElement(Hc,null,Object.entries(n.properties).map(l=>{let s=l[0];if(s==="id"||Pt.includes(s))return null;let i=l[1];if(!i.type)return null;let[u,d]=Pe(f,s),c=i.min!==void 0&&i.min>0;return i.type.length===1&&i.type[0].code==="boolean"?Ao.createElement(Mt,{key:s,title:Ff(s),description:i.definition,htmlFor:s},Ao.createElement(Ve,{property:i,name:s,defaultValue:u,defaultPropertyType:d,outcome:e.outcome,onChange:(g,y)=>{r(ot(o,s,y??s,l[1],g))}})):Ao.createElement(De,{key:s,title:Ff(s),description:i.definition,withAsterisk:c,htmlFor:s,outcome:e.outcome},Ao.createElement(Ve,{property:i,name:s,defaultValue:u,defaultPropertyType:d,onChange:(g,y)=>{r(ot(o,s,y??s,l[1],g))}}))}))}import{Button as ua,createStyles as Uc,Group as wf}from"@mantine/core";import re,{useMemo as Gc,useState as Qc}from"react";var zc=Uc(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 Wc(e){return e.toLocaleString("default",{month:"long"})+" "+e.getFullYear()}function Of(e){let{classes:o}=zc(),{onChangeMonth:t,onClick:r}=e,[a,n]=Qc(da);function f(s){n(i=>{let u=new Date(i.getTime());return u.setMonth(i.getMonth()+s),t(u),u})}let l=Gc(()=>Xc(a,e.slots),[a,e.slots]);return re.createElement("div",null,re.createElement(wf,{position:"apart",spacing:"xs",grow:!0,noWrap:!0},re.createElement("p",{style:{flex:1}},Wc(a)),re.createElement(wf,{position:"right",spacing:"xs"},re.createElement(ua,{variant:"outline","aria-label":"Previous month",onClick:()=>f(-1)},"<"),re.createElement(ua,{variant:"outline","aria-label":"Next month",onClick:()=>f(1)},">"))),re.createElement("table",{className:o.table},re.createElement("thead",null,re.createElement("tr",null,re.createElement("th",null,"SUN"),re.createElement("th",null,"MON"),re.createElement("th",null,"TUE"),re.createElement("th",null,"WED"),re.createElement("th",null,"THU"),re.createElement("th",null,"FRI"),re.createElement("th",null,"SAT"))),re.createElement("tbody",null,l.map((s,i)=>re.createElement("tr",{key:"week-"+i},s.map((u,d)=>re.createElement("td",{key:"day-"+d},u&&re.createElement(ua,{disabled:!u.available,onClick:()=>r(u.date)},u.date.getDate()))))))))}function da(){let e=new Date;return e.setDate(1),e.setHours(0,0,0,0),e}function Xc(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:Jc(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 Jc(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 $c,createStyles as Kc}from"@mantine/core";import jc from"react";var _c=Kc(()=>({root:{"@media (max-width: 800px)":{paddingLeft:4,paddingRight:4}}}));function Ke(e){let{children:o,...t}=e,{classes:r}=_c();return jc.createElement($c,{className:r.root,...t},o)}import fp from"react";import{ActionIcon as _f,Center as Qm,createStyles as zm,Group as Wm,Loader as Xm,Menu as qe,ScrollArea as Jm,TextInput as $m}from"@mantine/core";import{showNotification as Km,updateNotification as ha}from"@mantine/notifications";import{getReferenceString as at,normalizeErrorString as jm}from"@medplum/core";import T,{useCallback as Ut,useEffect as _m,useRef as Zf,useState as Yf}from"react";import{createStyles as dm,Group as qt,List as Rf,Stack as Nf,Text as Te,Title as Hf}from"@mantine/core";import{capitalize as cm,formatCodeableConcept as mm,formatDateTime as pa,formatObservationValue as pm,isReference as xm}from"@medplum/core";import h,{useEffect as Im,useState as gm}from"react";import{Blockquote as Zc,createStyles as Yc,Stack as em}from"@mantine/core";import Ef from"react";var om=Yc(e=>({noteBody:{fontSize:e.fontSizes.sm},noteCite:{fontSize:e.fontSizes.xs,marginBlockStart:3},noteRoot:{padding:5}}));function ca({value:e}){let{classes:o}=om();return e?Ef.createElement(em,{justify:"flex-start",spacing:"xs"},e.map(t=>t.text&&Ef.createElement(Zc,{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 lm}from"@mantine/core";import ma from"react";import{Text as tm}from"@mantine/core";import{getDisplayString as rm,isOk as am,normalizeErrorString as nm}from"@medplum/core";import Lf,{useState as fm}from"react";function Re(e){let{value:o,link:t,...r}=e,[a,n]=fm(),f=X(o,n),l;if(a&&!am(a))l=`[${nm(a)}]`;else if(f)l=rm(f);else return null;return t?Lf.createElement(se,{to:o,...r},l):Lf.createElement(tm,{component:"span",...r},l)}function je(e){return ma.createElement(lm,{spacing:"xs"},ma.createElement(Ce,{size:24,radius:12,value:e.value,link:e.link}),ma.createElement(Re,{value:e.value,link:e.link}))}import{Badge as sm}from"@mantine/core";import im from"react";var um={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 Vt(e){return im.createElement(sm,{color:um[e.status]},e.status)}var Vf=dm(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}}));xa.defaultProps={hideObservationNotes:!1,hideSpecimenInfo:!1};function xa(e){let o=P(),t=X(e.value),[r,a]=gm();if(Im(()=>{t?.specimen&&Promise.allSettled(t.specimen.map(f=>o.readReference(f))).then(f=>f.filter(l=>l.status==="fulfilled").map(l=>l.value)).then(a).catch(console.error)},[o,t]),!t)return null;let n=r?.flatMap(f=>f.note||[])||[];if(t.presentedForm&&t.presentedForm.length>0){let f=t.presentedForm[0];f.contentType?.startsWith("text/plain")&&f.data&&n.push({text:window.atob(f.data)})}return h.createElement(Nf,null,h.createElement(Hf,null,"Diagnostic Report"),h.createElement(hm,{value:t}),!e.hideSpecimenInfo&&ym(r),t.result&&h.createElement(Cm,{hideObservationNotes:e.hideObservationNotes,value:t.result}),n.length>0&&h.createElement(ca,{value:n}))}function hm({value:e}){return h.createElement(qt,{mt:"md",spacing:30},e.subject&&h.createElement("div",null,h.createElement(Te,{size:"xs",transform:"uppercase",color:"dimmed"},"Subject"),h.createElement(Te,null,h.createElement(je,{value:e.subject,link:!0}))),e.resultsInterpreter?.map(o=>h.createElement("div",{key:o.reference},h.createElement(Te,{size:"xs",transform:"uppercase",color:"dimmed"},"Interpreter"),h.createElement(Te,null,h.createElement(je,{value:o,link:!0})))),e.performer?.map(o=>h.createElement("div",{key:o.reference},h.createElement(Te,{size:"xs",transform:"uppercase",color:"dimmed"},"Performer"),h.createElement(Te,null,h.createElement(je,{value:o,link:!0})))),e.issued&&h.createElement("div",null,h.createElement(Te,{size:"xs",transform:"uppercase",color:"dimmed"},"Issued"),h.createElement(Te,null,pa(e.issued))),e.status&&h.createElement("div",null,h.createElement(Te,{size:"xs",transform:"uppercase",color:"dimmed"},"Status"),h.createElement(Te,null,cm(e.status))))}function ym(e){return h.createElement(Nf,{spacing:"xs"},h.createElement(Hf,{order:2,size:"h6"},"Specimens"),h.createElement(Rf,{type:"ordered"},e?.map(o=>h.createElement(Rf.Item,{ml:"sm",key:`specimen-${o.id}`},h.createElement(qt,{spacing:20},h.createElement(qt,{spacing:5},h.createElement(Te,{fw:500},"Collected:")," ",pa(o.collection?.collectedDateTime)),h.createElement(qt,{spacing:5},h.createElement(Te,{fw:500},"Received:")," ",pa(o.receivedTime)))))))}function Cm(e){let{classes:o}=Vf();return h.createElement("table",{className:o.table},h.createElement("thead",null,h.createElement("tr",null,h.createElement("th",null,"Test"),h.createElement("th",null,"Value"),h.createElement("th",null,"Reference Range"),h.createElement("th",null,"Interpretation"),h.createElement("th",null,"Category"),h.createElement("th",null,"Performer"),h.createElement("th",null,"Status"))),h.createElement("tbody",null,h.createElement(qf,{value:e.value,hideObservationNotes:e.hideObservationNotes})))}function qf(e){return h.createElement(h.Fragment,null,e.value?.map(o=>h.createElement(vm,{key:`obs-${xm(o)?o.reference:o.id}`,hideObservationNotes:e.hideObservationNotes,value:o})))}function vm(e){let{classes:o,cx:t}=Vf(),r=X(e.value);if(!r)return null;let a=!e.hideObservationNotes&&r.note,n=Pm(r);return h.createElement(h.Fragment,null,h.createElement("tr",{className:t({[o.criticalRow]:n})},h.createElement("td",{rowSpan:a?2:1},h.createElement(se,{to:r},h.createElement(ko,{value:r.code}))),h.createElement("td",null,h.createElement(Sm,{value:r})),h.createElement("td",null,h.createElement(bm,{value:r.referenceRange})),h.createElement("td",null,r.interpretation&&r.interpretation.length>0&&h.createElement(ko,{value:r.interpretation[0]})),h.createElement("td",null,r.category&&r.category.length>0&&h.createElement(h.Fragment,null,r.category.map(f=>h.createElement("div",{key:`category-${mm(f)}`},h.createElement(ko,{value:f}))))),h.createElement("td",null,r.performer?.map(f=>h.createElement(lo,{key:f.reference,value:f}))),h.createElement("td",null,r.status&&h.createElement(Vt,{status:r.status}))),r.hasMember&&h.createElement(qf,{value:r.hasMember,hideObservationNotes:e.hideObservationNotes}),a&&h.createElement("tr",null,h.createElement("td",{colSpan:6},h.createElement(ca,{value:r.note}))))}function Sm(e){let o=e.value;return h.createElement(h.Fragment,null,pm(o))}function bm(e){let o=e.value&&e.value.length>0&&e.value[0];return o?o.text?h.createElement(h.Fragment,null,o.text):h.createElement(kt,{value:o}):null}function Pm(e){let o=e.interpretation?.[0]?.coding?.[0]?.code;return o==="AA"||o==="LL"||o==="HH"||o==="A"}import{createStyles as Dm,Paper as km,useComponentDefaultProps as Tm}from"@mantine/core";import Bm from"react";var Am=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%"}}})),Mm={shadow:"xs",radius:"md",withBorder:!0};function Mo(e){let{className:o,children:t,width:r,fill:a,unstyled:n,...f}=Tm("Panel",Mm,e),{classes:l,cx:s}=Am({width:r,fill:a},{name:"Panel",unstyled:n});return Bm.createElement(km,{className:s(l.paper,o),...f},t)}import{createStyles as Fm}from"@mantine/core";import{getPropertyDisplayName as wm,stringify as Uf,toTypedValue as Gf}from"@medplum/core";import ue,{useEffect as Om,useState as Em}from"react";var Lm=Fm(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 zf(e){let{classes:o}=Lm(),t=P(),[r,a]=Em();if(Om(()=>{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?ue.createElement("table",{className:o.root},ue.createElement("colgroup",null,ue.createElement("col",{style:{width:"30%"}}),ue.createElement("col",{style:{width:"35%"}}),ue.createElement("col",{style:{width:"35%"}})),ue.createElement("thead",null,ue.createElement("tr",null,ue.createElement("th",null,"Property"),ue.createElement("th",null,"Before"),ue.createElement("th",null,"After"))),ue.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]=Pe(Gf(e.original),l),[d,c]=Pe(Gf(e.revised),l);return Qf(i)&&Qf(d)||Uf(i)===Uf(d)?null:ue.createElement("tr",{key:l},ue.createElement("td",null,wm(l)),ue.createElement("td",{className:o.removed},ue.createElement(xe,{property:s,propertyType:u,value:i,ignoreMissingValues:!0})),ue.createElement("td",{className:o.added},ue.createElement(xe,{property:s,propertyType:c,value:d,ignoreMissingValues:!0})))}))):null}function Qf(e){return!e||Array.isArray(e)&&e.length===0||typeof e=="object"&&Object.keys(e).length===0}import Rm,{useEffect as Nm,useState as Hm}from"react";function Ia(e){let o=P(),t=X(e.value),[r,a]=Hm();return Nm(()=>{t&&o.requestSchema(t.resourceType).then(a).catch(console.log)},[o,t]),!r||!t?null:Rm.createElement(Yo,{value:{type:t.resourceType,value:e.forceUseInput?e.value:t},ignoreMissingValues:e.ignoreMissingValues})}import{ActionIcon as Vm,Group as qm,Menu as Wf,Text as ga}from"@mantine/core";import{formatDateTime as Um,getReferenceString as Gm}from"@medplum/core";import ae from"react";function Xf(e){return ae.createElement(Ke,null,e.children)}function _e(e){let{resource:o,profile:t,padding:r,popupMenuItems:a,...n}=e,f=t??o.meta?.author,l=e.dateTime??o.meta?.lastUpdated;return ae.createElement(Mo,{"data-testid":"timeline-item",fill:!0,...n},ae.createElement(qm,{position:"apart",spacing:8,mx:"xs",my:"sm"},ae.createElement(Ce,{value:f,link:!0,size:"md"}),ae.createElement("div",{style:{flex:1}},ae.createElement(ga,{size:"sm"},ae.createElement(Re,{color:"dark",weight:500,value:f,link:!0})),ae.createElement(ga,{size:"xs"},ae.createElement(se,{color:"dimmed",to:e.resource},Um(l)),ae.createElement(ga,{component:"span",color:"dimmed",mx:8},"\xB7"),ae.createElement(se,{color:"dimmed",to:e.resource},e.resource.resourceType))),a&&ae.createElement(Wf,{position:"bottom-end",shadow:"md",width:200},ae.createElement(Wf.Target,null,ae.createElement(Vm,{radius:"xl","aria-label":`Actions for ${Gm(e.resource)}`},ae.createElement(Ar,null))),a)),ae.createElement(yo,null,r&&ae.createElement("div",{style:{padding:"0 16px 16px 16px"}},e.children),!r&&ae.createElement(ae.Fragment,null,e.children)))}function Kf(e,o){e.sort((t,r)=>{let a=Jf(t,o),n=Jf(r,o);return a>n?1:a<n?-1:$f(t,o)-$f(r,o)})}function Jf(e,o){if(!jf(e,o)){let t=e.priority;if(typeof t=="string")return{stat:4,asap:3,urgent:2}[t]??0}return 0}function $f(e,o){if(!jf(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 jf(e,o){return!!o&&e.resourceType===o.resourceType&&e.id===o.id}var Zm=zm(e=>({pinnedComment:{backgroundColor:e.colors.blue[0]}}));function Ze(e){let o=P(),t=Qe(),r=o.getProfile(),a=Zf(null),n=X(e.value),[f,l]=Yf(),[s,i]=Yf([]),u=e.loadTimelineResources,d=Zf(s);d.current=s;let c=Ut(C=>{Kf(C,n),C.reverse(),i(C)},[n]),g=Ut(C=>{let R=[];for(let Ae of C){if(Ae.status!=="fulfilled")continue;let ye=Ae.value;if(ye.type==="history"&&l(ye),ye.entry)for(let ro of ye.entry)R.push(ro.resource)}c(R)},[c]),y=Ut(C=>c([...d.current,C]),[c]),A=Ut(()=>{let C,R;"resourceType"in e.value?(C=e.value.resourceType,R=e.value.id):[C,R]=e.value.reference?.split("/"),u(o,C,R).then(g).catch(console.log)},[o,e.value,u,g]);_m(()=>A(),[A]);function v(C){!n||!e.createCommunication||o.createResource(e.createCommunication(n,r,C)).then(R=>y(R)).catch(console.log)}function B(C){!n||!e.createMedia||o.createResource(e.createMedia(n,r,C)).then(R=>y(R)).then(()=>ha({id:"upload-notification",color:"teal",title:"Upload complete",message:"",icon:T.createElement(Wo,{size:16}),autoClose:2e3})).catch(R=>ha({id:"upload-notification",color:"red",title:"Upload error",message:jm(R),icon:T.createElement(Fr,{size:16}),autoClose:2e3}))}function I(C,R){return o.updateResource({...C,priority:R})}function H(C){I(C,"stat").then(A).catch(console.log)}function b(C){I(C,"routine").then(A).catch(console.log)}function x(C){t(`/${C.resourceType}/${C.id}`)}function q(C){t(`/${C.resourceType}/${C.id}/edit`)}function oe(C){t(`/${C.resourceType}/${C.id}/delete`)}function me(C){t(`/${C.resourceType}/${C.id}/_history/${C.meta?.versionId}`)}function te(){Km({id:"upload-notification",loading:!0,title:"Initializing upload...",message:"Please wait...",autoClose:!1,withCloseButton:!1})}function qo(C){ha({id:"upload-notification",loading:!0,title:"Uploading...",message:np(C),autoClose:!1,withCloseButton:!1})}return n?T.createElement(Xf,null,e.createCommunication&&T.createElement(Mo,null,T.createElement($,{testid:"timeline-form",onSubmit:C=>{v(C.text);let R=a.current;R&&(R.value="",R.focus())}},T.createElement(Wm,{spacing:"xs",noWrap:!0,style:{width:"100%"}},T.createElement(Ce,{value:r}),T.createElement($m,{name:"text",ref:a,placeholder:"Add comment",style:{width:"100%",maxWidth:300}}),T.createElement(_f,{type:"submit",radius:"xl",color:"blue",variant:"filled"},T.createElement(Rr,{size:16})),T.createElement(Po,{onUpload:B,onUploadStart:te,onUploadProgress:qo},C=>T.createElement(_f,{...C,radius:"xl",color:"blue",variant:"filled"},T.createElement(Xo,{size:16})))))),s.map(C=>{if(!C)return null;let R=`${C.resourceType}/${C.id}/${C.meta?.versionId}`;if(C.resourceType===n.resourceType&&C.id===n.id)return T.createElement(Ym,{key:R,history:f,resource:C,onDetails:me});switch(C.resourceType){case"AuditEvent":return T.createElement(rp,{key:R,resource:C,onDetails:x});case"Communication":return T.createElement(op,{key:R,resource:C,onPin:C.priority!=="stat"?H:void 0,onUnpin:C.priority==="stat"?b:void 0,onDetails:x,onEdit:q,onDelete:oe});case"DiagnosticReport":return T.createElement(ap,{key:R,resource:C,onDetails:x,onEdit:q,onDelete:oe});case"Media":return T.createElement(tp,{key:R,resource:C,onDetails:x,onEdit:q,onDelete:oe});default:return T.createElement(_e,{key:R,resource:C,padding:!0},T.createElement(Ia,{value:C,ignoreMissingValues:!0}))}})):T.createElement(Qm,{style:{width:"100%",height:"100%"}},T.createElement(Xm,null))}function Fo(e){return T.createElement(qe.Dropdown,null,T.createElement(qe.Label,null,"Resource"),e.onPin&&T.createElement(qe.Item,{icon:T.createElement(Nr,{size:14}),onClick:()=>e.onPin(e.resource),"aria-label":`Pin ${at(e.resource)}`},"Pin"),e.onUnpin&&T.createElement(qe.Item,{icon:T.createElement(Hr,{size:14}),onClick:()=>e.onUnpin(e.resource),"aria-label":`Unpin ${at(e.resource)}`},"Unpin"),e.onDetails&&T.createElement(qe.Item,{icon:T.createElement(Er,{size:14}),onClick:()=>e.onDetails(e.resource),"aria-label":`Details ${at(e.resource)}`},"Details"),e.onEdit&&T.createElement(qe.Item,{icon:T.createElement(Mr,{size:14}),onClick:()=>e.onEdit(e.resource),"aria-label":`Edit ${at(e.resource)}`},"Edit"),e.onDelete&&T.createElement(T.Fragment,null,T.createElement(qe.Divider,null),T.createElement(qe.Label,null,"Danger zone"),T.createElement(qe.Item,{color:"red",icon:T.createElement(Ko,{size:14}),onClick:()=>e.onDelete(e.resource),"aria-label":`Delete ${at(e.resource)}`},"Delete")))}function Ym(e){let o=ep(e.history,e.resource);return o?T.createElement(_e,{resource:e.resource,padding:!0,popupMenuItems:T.createElement(Fo,{...e})},T.createElement(zf,{original:o,revised:e.resource})):T.createElement(_e,{resource:e.resource,padding:!0,popupMenuItems:T.createElement(Fo,{...e})},T.createElement("h3",null,"Created"),T.createElement(Ia,{value:e.resource,ignoreMissingValues:!0,forceUseInput:!0}))}function ep(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 op(e){let{classes:o}=Zm(),r=!e.resource.priority||e.resource.priority==="routine"?void 0:o.pinnedComment;return T.createElement(_e,{resource:e.resource,profile:e.resource.sender,dateTime:e.resource.sent,padding:!0,className:r,popupMenuItems:T.createElement(Fo,{...e})},T.createElement("p",null,e.resource.payload?.[0]?.contentString))}function tp(e){let o=e.resource.content?.contentType,t=o&&!o.startsWith("image/")&&!o.startsWith("video/")&&o!=="application/pdf";return T.createElement(_e,{resource:e.resource,padding:!!t,popupMenuItems:T.createElement(Fo,{...e})},T.createElement(Le,{value:e.resource.content}))}function rp(e){return T.createElement(_e,{resource:e.resource,padding:!0,popupMenuItems:T.createElement(Fo,{...e})},T.createElement(Jm,null,T.createElement("pre",null,e.resource.outcomeDesc)))}function ap(e){return T.createElement(_e,{resource:e.resource,padding:!0,popupMenuItems:T.createElement(Fo,{...e})},T.createElement(xa,{value:e.resource}))}function np(e){if(e.lengthComputable){let o=100*e.loaded/e.total;return`Uploaded: ${ya(e.loaded)} / ${ya(e.total)} ${o.toFixed(2)}%`}return`Uploaded: ${ya(e.loaded)}`}function ya(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 jB(e){return fp.createElement(Ze,{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 el from"react";function Gt(e){let{children:o,...t}=e;return el.createElement(Ke,null,el.createElement(Mo,{...t},o))}import{createReference as Qt}from"@medplum/core";import lp from"react";function sA(e){return lp.createElement(Ze,{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:Qt(o),subject:o.subject,sender:Qt(t),sent:new Date().toISOString(),payload:[{contentString:r}]}),createMedia:(o,t,r)=>({resourceType:"Media",status:"completed",encounter:Qt(o),subject:o.subject,operator:Qt(t),issued:new Date().toISOString(),content:r})})}import{Button as px,Loader as xx,Table as Ix}from"@mantine/core";import{normalizeOperationOutcome as gx}from"@medplum/core";import ne,{useEffect as wl,useRef as Ol,useState as _t}from"react";import{evalFhirPath as sp}from"@medplum/core";import ip from"react";function ol(e){let o;try{o=sp(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 ip.createElement(xe,{value:o[0]||"",propertyType:e.propertyType})}import{ActionIcon as Zp,Button as Lo,Center as Kt,createStyles as Yp,Group as jt,Loader as ex,Menu as Al,Pagination as ox,Table as tx,Text as Ba,UnstyledButton as rx}from"@mantine/core";import{DEFAULT_SEARCH_COUNT as wa,formatSearchQuery as ax,globalSchema as nx}from"@medplum/core";import D,{useCallback as Ml,useEffect as Fl,useRef as fx,useState as Aa}from"react";import{Box as up,Button as dp,Modal as cp,Text as mp}from"@mantine/core";import wo from"react";function rl(e){return wo.createElement(cp,{title:"Export",closeButtonProps:{"aria-label":"Close"},opened:e.visible,onClose:e.onCancel},wo.createElement(up,{display:"flex",sx:{justifyContent:"space-between"}},e.exportCsv&&wo.createElement(tl,{text:"CSV",exportLogic:e.exportCsv,onCancel:e.onCancel}),e.exportTransactionBundle&&wo.createElement(tl,{text:"Transaction Bundle",exportLogic:e.exportTransactionBundle,onCancel:e.onCancel})),wo.createElement(mp,{sx:{marginTop:"10px",marginLeft:"2px"}},"Limited to 1000 records"))}function tl(e){return wo.createElement(dp,{onClick:()=>{e.exportLogic(),e.onCancel()}},`Export as ${e.text}`)}import{Button as lt,Modal as bp}from"@mantine/core";import{globalSchema as Pp,stringify as Dp}from"@medplum/core";import J,{useEffect as kp,useRef as hl,useState as Tp}from"react";import{capitalize as pp,DEFAULT_SEARCH_COUNT as xp,evalFhirPathTyped as Ip,formatDateTime as gp,Operator as F}from"@medplum/core";import zt from"react";var hp={string:[F.EQUALS,F.NOT,F.CONTAINS,F.EXACT],fulltext:[F.EQUALS,F.NOT,F.CONTAINS,F.EXACT],token:[F.EQUALS,F.NOT],reference:[F.EQUALS,F.NOT],numeric:[F.EQUALS,F.NOT_EQUALS,F.GREATER_THAN,F.LESS_THAN,F.GREATER_THAN_OR_EQUALS,F.LESS_THAN_OR_EQUALS],quantity:[F.EQUALS,F.NOT_EQUALS,F.GREATER_THAN,F.LESS_THAN,F.GREATER_THAN_OR_EQUALS,F.LESS_THAN_OR_EQUALS],date:[F.EQUALS,F.NOT_EQUALS,F.GREATER_THAN,F.LESS_THAN,F.GREATER_THAN_OR_EQUALS,F.LESS_THAN_OR_EQUALS,F.STARTS_AFTER,F.ENDS_BEFORE,F.APPROXIMATELY],datetime:[F.EQUALS,F.NOT_EQUALS,F.GREATER_THAN,F.LESS_THAN,F.GREATER_THAN_OR_EQUALS,F.LESS_THAN_OR_EQUALS,F.STARTS_AFTER,F.ENDS_BEFORE,F.APPROXIMATELY]},yp={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 nt(e,o){return{...e,filters:o,offset:0,name:void 0}}function PA(e){return nt(e,[])}function Wt(e,o){return nt(e,(e.filters??[]).filter(t=>t.code!==o))}function Oo(e,o,t,r,a){a&&(e=Wt(e,o));let n=[];return e.filters&&n.push(...e.filters),n.push({code:o,operator:t,value:r??""}),nt(e,n)}function DA(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 nl(e,o){if(!e.filters)return e;let t=[...e.filters];return t.splice(o,1),{...e,filters:t,name:void 0}}function fl(e,o){return Ca(e,o,-1)}function ll(e,o){return Ca(e,o,0)}function sl(e,o){return Ca(e,o,1)}function Ca(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),Sa(e,o,r,a)}function il(e,o){return va(e,o,-1)}function ul(e,o){return va(e,o,0)}function dl(e,o){return va(e,o,1)}function va(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),Sa(e,o,r,a)}function cl(e,o){let t=new Date;return t.setMonth(0),t.setDate(1),t.setHours(0,0,0,0),Sa(e,o,t,new Date)}function Sa(e,o,t,r){return e=Wt(e,o),e=al(e,o,F.GREATER_THAN_OR_EQUALS,t),e=al(e,o,F.LESS_THAN_OR_EQUALS,r),e}function al(e,o,t,r){return Oo(e,o,t,r.toISOString())}function ba(e,o,t=!0){return Oo(e,o,F.MISSING,t.toString())}function Cp(e,o){return e.offset===o?e:{...e,offset:o,name:void 0}}function ml(e,o){let t=e.count??xp,r=(o-1)*t;return Cp(e,r)}function Pa(e,o,t){return o===pl(e)&&t!==void 0&&t===xl(e)?e:{...e,sortRules:[{code:o,descending:!!t}],name:void 0}}function kA(e,o){let t=!1;return pl(e)===o&&(t=!xl(e)),Pa(e,o,t)}function pl(e){let o=e.sortRules;if(!o||o.length===0)return;let t=o[0].code;return t.startsWith("-")?t.substr(1):t}function xl(e){let o=e.sortRules;return!o||o.length===0?!1:!!o[0].descending}function Il(e){return hp[e.type]}function ft(e){return yp[e]??""}function Se(e){let o=e;return o.includes(".")&&(o=o.split(".").pop()),o==="id"||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(pp).join(" "))}function gl(e,o){let t=o.name;return t==="id"?e.id:t==="meta.versionId"?e.meta?.versionId:t==="_lastUpdated"?gp(e.meta?.lastUpdated):o.elementDefinition&&`${e.resourceType}.${o.name}`===o.elementDefinition.path?vp(e,o.elementDefinition):o.searchParams&&o.searchParams.length===1&&o.name===o.searchParams[0].code?Sp(e,o.searchParams[0]):null}function vp(e,o){let t=o.path?.split(".")?.pop()?.replaceAll("[x]","")??"",[r,a]=Pe({type:e.resourceType,value:e},t);return r?zt.createElement(xe,{property:o,propertyType:a,value:r,maxWidth:200,ignoreMissingValues:!0,link:!1}):null}function Sp(e,o){let t=Ip(o.expression,[{type:e.resourceType,value:e}]);return!t||t.length===0?null:zt.createElement(zt.Fragment,null,t.map((r,a)=>zt.createElement(xe,{key:`${a}-${t.length}`,propertyType:r.type,value:r.value,maxWidth:200,ignoreMissingValues:!0,link:!1})))}function yl(e){let[o,t]=Tp({search:JSON.parse(Dp(e.search))}),r=hl(null),a=hl(null);kp(()=>{t({search:e.search})},[e.search]);function n(I){I.key==="Enter"&&i()}function f(){i()}function l(I){I.key==="Enter"&&u()}function s(){u()}function i(){let I=o.search.fields??[],H=r.current?.value;if(H){let b=[...I,H];t({search:{...o.search,fields:b}})}}function u(){let I=o.search.fields??[],H=a.current?.value;if(H){let b=[...I];b.splice(b.indexOf(H),1),t({search:{...o.search,fields:b}})}}function d(){let I=o.search.fields??[],H=a.current?.value;if(!H)return;let b=[...I],x=b.indexOf(H);x<=0||(g(b,x,x-1),t({search:{...o.search,fields:b}}))}function c(){let I=o.search.fields??[],H=a.current?.value;if(!H)return;let b=[...I],x=b.indexOf(H);x>=b.length-1||(g(b,x,x+1),t({search:{...o.search,fields:b}}))}function g(I,H,b){let x=I[H];I[H]=I[b],I[b]=x}if(!e.visible)return null;let y=e.search.resourceType,A=Pp.types[y],v=o.search.fields??[],B=Bp(A).filter(I=>!v.includes(I)).sort((I,H)=>I.localeCompare(H));return J.createElement(bp,{title:"Fields",closeButtonProps:{"aria-label":"Close"},opened:e.visible,onClose:e.onCancel},J.createElement("div",null,J.createElement("table",{style:{margin:"auto"}},J.createElement("thead",null,J.createElement("tr",null,J.createElement("th",{colSpan:2,align:"center"},"Available"),J.createElement("th",{colSpan:2,align:"center"},"Selected"))),J.createElement("tbody",null,J.createElement("tr",null,J.createElement("td",{colSpan:2,align:"center"},J.createElement("select",{ref:r,size:15,tabIndex:1,style:{width:"200px"},onKeyDown:I=>n(I),onDoubleClick:()=>f(),"data-testid":"available"},B.map(I=>J.createElement("option",{key:I,value:I},Se(I))))),J.createElement("td",{colSpan:2,align:"center"},J.createElement("select",{ref:a,size:15,tabIndex:4,style:{width:"200px"},onKeyDown:I=>l(I),onDoubleClick:()=>s(),"data-testid":"selected"},v.map(I=>J.createElement("option",{key:I,value:I},Se(I))))))),J.createElement("tfoot",null,J.createElement("tr",null,J.createElement("td",{align:"center"},J.createElement(lt,{compact:!0,variant:"outline",onClick:i},"Add")),J.createElement("td",{align:"center"},J.createElement(lt,{compact:!0,variant:"outline",onClick:u},"Remove")),J.createElement("td",{align:"center"},J.createElement(lt,{compact:!0,variant:"outline",onClick:d},"Up")),J.createElement("td",{align:"center"},J.createElement(lt,{compact:!0,variant:"outline",onClick:c},"Down")))))),J.createElement(lt,{onClick:()=>e.onOk(o.search)},"OK"))}function Bp(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(Se(a));if(e.searchParams)for(let a of Object.keys(e.searchParams)){let n=Se(a);!t.has(a)&&!r.has(n)&&(o.push(a),t.add(a),r.add(Se(a)))}return o}import{Button as it,Group as Rp,Modal as Np,NativeSelect as vl}from"@mantine/core";import{globalSchema as Hp,stringify as Sl}from"@medplum/core";import L,{useEffect as Vp,useRef as Pl,useState as ka}from"react";import{formatDateTime as Ap,getSearchParameterDetails as Mp,globalSchema as Fp,Operator as Cl,SearchParameterType as wp}from"@medplum/core";import st from"react";function Xt(e){let{resourceType:o,filter:t}=e,r=Fp.types[o].searchParams?.[t.code];if(r){if(r.type==="reference"&&(t.operator===Cl.EQUALS||t.operator===Cl.NOT_EQUALS))return st.createElement(Re,{value:{reference:t.value}});let a=Mp(o,r);if(t.code==="_lastUpdated"||a.type===wp.DATETIME)return st.createElement(st.Fragment,null,Ap(t.value))}return st.createElement(st.Fragment,null,t.value)}import{Checkbox as Op,TextInput as Da}from"@mantine/core";import{getSearchParameterDetails as Ep,SearchParameterType as Eo}from"@medplum/core";import io from"react";function Jt(e){let o=Ep(e.resourceType,e.searchParam),t="filter-value";switch(o.type){case Eo.REFERENCE:return io.createElement(Bo,{name:t,defaultValue:e.defaultValue?{reference:e.defaultValue}:void 0,targetTypes:e.searchParam.target,autoFocus:e.autoFocus,onChange:r=>{r?e.onChange(r.reference):e.onChange("")}});case Eo.BOOLEAN:return io.createElement(Op,{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 Eo.DATE:return io.createElement(Da,{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 Eo.DATETIME:return io.createElement(Fe,{name:t,defaultValue:e.defaultValue,autoFocus:e.autoFocus,onChange:e.onChange});case Eo.NUMBER:return io.createElement(Da,{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 Eo.QUANTITY:return io.createElement(ke,{name:t,defaultValue:Lp(e.defaultValue),autoFocus:e.autoFocus,onChange:r=>{r?e.onChange(`${r.value}`):e.onChange("")}});default:return io.createElement(Da,{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 Lp(e){if(e){let[o,t,r]=e.split("|");if(o)return{value:parseFloat(o),system:t,unit:r}}}function Dl(e){let[o,t]=ka(JSON.parse(Sl(e.search))),[r,a]=ka(-1),n=Pl(o);n.current=o,Vp(()=>{t(JSON.parse(Sl(e.search)))},[e.search]);function f(u){t(Oo(n.current,u.code,u.operator,u.value))}if(!e.visible)return null;let l=e.search.resourceType,s=Hp.types[l].searchParams??{},i=o.filters||[];return L.createElement(Np,{title:"Filters",closeButtonProps:{"aria-label":"Close"},size:900,opened:e.visible,onClose:e.onCancel},L.createElement("div",null,L.createElement("table",null,L.createElement("colgroup",null,L.createElement("col",{style:{width:200}}),L.createElement("col",{style:{width:200}}),L.createElement("col",{style:{width:380}}),L.createElement("col",{style:{width:120}})),L.createElement("thead",null,L.createElement("tr",null,L.createElement("th",null,"Field"),L.createElement("th",null,"Operation"),L.createElement("th",null,"Value"),L.createElement("th",null,"Actions"))),L.createElement("tbody",null,i.map((u,d)=>d===r?L.createElement(bl,{key:`filter-${u.code}-${u.operator}-${u.value}-input`,resourceType:l,searchParams:s,defaultValue:u,okText:"Save",onOk:c=>{let g=[...i];g[d]=c,t(nt(n.current,g)),a(-1)},onCancel:()=>a(-1)}):L.createElement(qp,{key:`filter-${u.code}-${u.operator}-${u.value}-display`,resourceType:l,searchParams:s,filter:u,onEdit:()=>a(d),onDelete:()=>t(nl(n.current,d))})),L.createElement(bl,{resourceType:l,searchParams:s,okText:"Add",onOk:f})))),L.createElement(Rp,{position:"right",mt:"xl"},L.createElement(it,{onClick:()=>e.onOk(n.current)},"OK")))}function qp(e){let{filter:o}=e;return L.createElement("tr",null,L.createElement("td",null,Se(o.code)),L.createElement("td",null,ft(o.operator)),L.createElement("td",null,L.createElement(Xt,{resourceType:e.resourceType,filter:o})),L.createElement("td",null,L.createElement(it,{compact:!0,variant:"outline",onClick:e.onEdit},"Edit"),L.createElement(it,{compact:!0,variant:"outline",onClick:e.onDelete},"Delete")))}function bl(e){let[o,t]=ka(e.defaultValue??{}),r=Pl(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&&Il(l);return L.createElement("tr",null,L.createElement("td",null,L.createElement(vl,{"data-testid":"filter-field",defaultValue:r.current.code,onChange:i=>a(i.currentTarget.value),data:["",...Object.keys(e.searchParams).map(i=>({value:i,label:Se(i)}))]})),L.createElement("td",null,s&&L.createElement(vl,{"data-testid":"filter-operation",defaultValue:o.operator,onChange:i=>n(i.currentTarget.value),data:["",...s.map(i=>({value:i,label:ft(i)}))]})),L.createElement("td",null,l&&o.operator&&L.createElement(Jt,{resourceType:e.resourceType,searchParam:l,defaultValue:o.value,onChange:f})),L.createElement("td",null,o.code&&o.operator&&o.value&&L.createElement(it,{compact:!0,variant:"outline",onClick:()=>{e.onOk(r.current),t({})}},e.okText),e.onCancel&&L.createElement(it,{compact:!0,variant:"outline",onClick:e.onCancel},"Cancel")))}import{Button as Up,Grid as Ta,Modal as Gp}from"@mantine/core";import uo,{useState as Qp}from"react";function kl(e){let[o,t]=Qp(e.defaultValue??"");if(!e.visible||!e.searchParam||!e.filter)return null;function r(){e.onOk({...e.filter,value:o})}return uo.createElement(Gp,{title:e.title,size:"xl",opened:e.visible,onClose:e.onCancel},uo.createElement($,{onSubmit:r},uo.createElement(Ta,null,uo.createElement(Ta.Col,{span:10},uo.createElement(Jt,{resourceType:e.resourceType,searchParam:e.searchParam,defaultValue:o,autoFocus:!0,onChange:t})),uo.createElement(Ta.Col,{span:2},uo.createElement(Up,{onClick:r,fullWidth:!0},"OK")))))}import{Menu as M}from"@mantine/core";import{Operator as de}from"@medplum/core";import m from"react";function Tl(e){if(!e.searchParams)return null;function o(n,f){a(Pa(e.search,n.code,f))}function t(n){a(Wt(e.search,n.code))}function r(n,f){e.onPrompt(n,{code:n.code,operator:f,value:""})}function a(n){e.onChange(n)}return e.searchParams.length===1?m.createElement(zp,{search:e.search,searchParam:e.searchParams[0],onSort:o,onPrompt:r,onChange:a,onClear:t}):m.createElement(M.Dropdown,null,e.searchParams.map(n=>m.createElement(M.Item,{key:n.code},Se(n.code))))}function zp(e){switch(e.searchParam.type){case"date":return m.createElement(Wp,{...e});case"number":case"quantity":return m.createElement(Xp,{...e});case"reference":return m.createElement(Jp,{...e});case"string":case"token":case"uri":return m.createElement($p,{...e});default:return m.createElement(m.Fragment,null,"Unknown search param type: ",e.searchParam.type)}}function Wp(e){let{searchParam:o}=e,t=o.code;return m.createElement(M.Dropdown,null,m.createElement(M.Item,{icon:m.createElement(Jo,{size:14}),onClick:()=>e.onSort(o,!1)},"Sort Oldest to Newest"),m.createElement(M.Item,{icon:m.createElement($o,{size:14}),onClick:()=>e.onSort(o,!0)},"Sort Newest to Oldest"),m.createElement(M.Divider,null),m.createElement(M.Item,{icon:m.createElement(go,{size:14}),onClick:()=>e.onPrompt(o,de.EQUALS)},"Equals..."),m.createElement(M.Item,{icon:m.createElement(Io,{size:14}),onClick:()=>e.onPrompt(o,de.NOT_EQUALS)},"Does not equal..."),m.createElement(M.Divider,null),m.createElement(M.Item,{icon:m.createElement(ht,{size:14}),onClick:()=>e.onPrompt(o,de.ENDS_BEFORE)},"Before..."),m.createElement(M.Item,{icon:m.createElement(gt,{size:14}),onClick:()=>e.onPrompt(o,de.STARTS_AFTER)},"After..."),m.createElement(M.Item,{icon:m.createElement(vr,{size:14}),onClick:()=>e.onPrompt(o,de.EQUALS)},"Between..."),m.createElement(M.Divider,null),m.createElement(M.Item,{icon:m.createElement(Ne,{size:14}),onClick:()=>e.onChange(sl(e.search,t))},"Tomorrow"),m.createElement(M.Item,{icon:m.createElement(Ne,{size:14}),onClick:()=>e.onChange(ll(e.search,t))},"Today"),m.createElement(M.Item,{icon:m.createElement(Ne,{size:14}),onClick:()=>e.onChange(fl(e.search,t))},"Yesterday"),m.createElement(M.Divider,null),m.createElement(M.Item,{icon:m.createElement(Ne,{size:14}),onClick:()=>e.onChange(dl(e.search,t))},"Next Month"),m.createElement(M.Item,{icon:m.createElement(Ne,{size:14}),onClick:()=>e.onChange(ul(e.search,t))},"This Month"),m.createElement(M.Item,{icon:m.createElement(Ne,{size:14}),onClick:()=>e.onChange(il(e.search,t))},"Last Month"),m.createElement(M.Divider,null),m.createElement(M.Item,{icon:m.createElement(Ne,{size:14}),onClick:()=>e.onChange(cl(e.search,t))},"Year to date"),m.createElement($t,{...e}))}function Xp(e){let{searchParam:o}=e;return m.createElement(M.Dropdown,null,m.createElement(M.Item,{icon:m.createElement(Jo,{size:14}),onClick:()=>e.onSort(o,!1)},"Sort Smallest to Largest"),m.createElement(M.Item,{icon:m.createElement($o,{size:14}),onClick:()=>e.onSort(o,!0)},"Sort Largest to Smallest"),m.createElement(M.Divider,null),m.createElement(M.Item,{icon:m.createElement(go,{size:14}),onClick:()=>e.onPrompt(o,de.EQUALS)},"Equals..."),m.createElement(M.Item,{icon:m.createElement(Io,{size:14}),onClick:()=>e.onPrompt(o,de.NOT_EQUALS)},"Does not equal..."),m.createElement(M.Divider,null),m.createElement(M.Item,{icon:m.createElement(gt,{size:14}),onClick:()=>e.onPrompt(o,de.GREATER_THAN)},"Greater than..."),m.createElement(M.Item,{icon:m.createElement(ho,{size:14}),onClick:()=>e.onPrompt(o,de.GREATER_THAN_OR_EQUALS)},"Greater than or equal to..."),m.createElement(M.Item,{icon:m.createElement(ht,{size:14}),onClick:()=>e.onPrompt(o,de.LESS_THAN)},"Less than..."),m.createElement(M.Item,{icon:m.createElement(ho,{size:14}),onClick:()=>e.onPrompt(o,de.LESS_THAN_OR_EQUALS)},"Less than or equal to..."),m.createElement($t,{...e}))}function Jp(e){let{searchParam:o}=e;return m.createElement(M.Dropdown,null,m.createElement(M.Item,{icon:m.createElement(go,{size:14}),onClick:()=>e.onPrompt(o,de.EQUALS)},"Equals..."),m.createElement(M.Item,{icon:m.createElement(Io,{size:14}),onClick:()=>e.onPrompt(o,de.NOT)},"Does not equal..."),m.createElement($t,{...e}))}function $p(e){let{searchParam:o}=e;return m.createElement(M.Dropdown,null,m.createElement(M.Item,{icon:m.createElement(Jo,{size:14}),onClick:()=>e.onSort(o,!1)},"Sort A to Z"),m.createElement(M.Item,{icon:m.createElement($o,{size:14}),onClick:()=>e.onSort(o,!0)},"Sort Z to A"),m.createElement(M.Divider,null),m.createElement(M.Item,{icon:m.createElement(go,{size:14}),onClick:()=>e.onPrompt(o,de.EQUALS)},"Equals..."),m.createElement(M.Item,{icon:m.createElement(Io,{size:14}),onClick:()=>e.onPrompt(o,de.NOT)},"Does not equal..."),m.createElement(M.Divider,null),m.createElement(M.Item,{icon:m.createElement(br,{size:14}),onClick:()=>e.onPrompt(o,de.CONTAINS)},"Contains..."),m.createElement(M.Item,{icon:m.createElement(Sr,{size:14}),onClick:()=>e.onPrompt(o,de.EQUALS)},"Does not contain..."),m.createElement($t,{...e}))}function $t(e){let{searchParam:o}=e,t=o.code;return m.createElement(m.Fragment,null,m.createElement(M.Divider,null),m.createElement(M.Item,{icon:m.createElement(yr,{size:14}),onClick:()=>e.onChange(ba(e.search,t))},"Missing"),m.createElement(M.Item,{icon:m.createElement(hr,{size:14}),onClick:()=>e.onChange(ba(e.search,t,!1))},"Not missing"),m.createElement(M.Divider,null),m.createElement(M.Item,{icon:m.createElement(Wr,{size:14}),onClick:()=>e.onClear(o)},"Clear filters"))}import{getSearchParameterDetails as Kp,globalSchema as jp}from"@medplum/core";function Bl(e){let o=e.resourceType,t=[];for(let r of e.fields||["id","_lastUpdated"])t.push(_p(o,r));return t}function _p(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=jp.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=Kp(e,a);return{name:o,elementDefinition:n.elementDefinitions?.[0],searchParams:[a]}}return{name:o}}var Ma=class extends Event{constructor(t){super("change");this.definition=t}},Fa=class extends Event{constructor(t){super("load");this.response=t}},co=class extends Event{constructor(t,r){super("click");this.resource=t,this.browserEvent=r}},lx=Yp(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 sx(e){let{classes:o}=lx(),t=P(),[r,a]=Aa(!1),[n,f]=Aa(),{search:l,onLoad:s}=e,[i,u]=Aa({selected:{},fieldEditorVisible:!1,filterEditorVisible:!1,exportDialogVisible:!1,filterDialogVisible:!1}),d=fx(i);d.current=i;let c=l.total??"accurate",g=Ml(k=>{f(void 0),t.search(l.resourceType,ax({...l,total:c,fields:void 0}),k).then(W=>{u({...d.current,searchResponse:W}),s&&s(new Fa(W))}).catch(W=>{u({...d.current,searchResponse:void 0}),f(W)})},[t,l,c,s]),y=Ml(()=>{u({...d.current,searchResponse:void 0}),g({cache:"reload"})},[g]);Fl(()=>{g()},[g]);function A(k,W){k.stopPropagation();let le=k.target.checked,pe={...d.current.selected};le?pe[W]=!0:delete pe[W],u({...d.current,selected:pe})}function v(k){k.stopPropagation();let Z=k.target.checked,le={},pe=d.current.searchResponse;Z&&pe?.entry&&pe.entry.forEach(Uo=>{Uo.resource?.id&&(le[Uo.resource.id]=!0)}),u({...d.current,selected:le})}function B(){let k=d.current;if(!k.searchResponse?.entry||k.searchResponse.entry.length===0)return!1;for(let W of k.searchResponse.entry)if(W.resource?.id&&!k.selected[W.resource.id])return!1;return!0}function I(k){e.onChange&&e.onChange(new Ma(k))}function H(k,W){if(Ct(k.target)||k.button===2)return;N(k);let Z=k.button===1||k.ctrlKey||k.metaKey;!Z&&e.onClick&&e.onClick(new co(W,k)),Z&&e.onAuxClick&&e.onAuxClick(new co(W,k))}function b(){return!!(e.onExport??e.onExportCsv??e.onExportTransactionBundle)}if(Fl(()=>{a(!1),t.requestSchema(e.search.resourceType).then(()=>a(!0)).catch(console.log)},[t,e.search.resourceType]),!(r&&nx.types[e.search.resourceType]))return D.createElement(Kt,{style:{width:"100%",height:"100%"}},D.createElement(ex,null));let q=e.checkboxesEnabled,oe=Bl(l),me=l.resourceType,te=i.searchResponse,C=te?.entry?.map(k=>k.resource),R="subtle",Ae="gray",ye=16,ro=window.innerWidth<768;return D.createElement("div",{className:o.root,"data-testid":"search-control"},!e.hideToolbar&&D.createElement(jt,{position:"apart",mb:"xl"},D.createElement(jt,{spacing:2},D.createElement(Lo,{compact:!0,variant:R,color:Ae,leftIcon:D.createElement(kr,{size:ye}),onClick:()=>u({...d.current,fieldEditorVisible:!0})},"Fields"),D.createElement(Lo,{compact:!0,variant:R,color:Ae,leftIcon:D.createElement(Or,{size:ye}),onClick:()=>u({...d.current,filterEditorVisible:!0})},"Filters"),e.onNew&&D.createElement(Lo,{compact:!0,variant:R,color:Ae,leftIcon:D.createElement(wr,{size:ye}),onClick:e.onNew},"New..."),!ro&&b()&&D.createElement(Lo,{compact:!0,variant:R,color:Ae,leftIcon:D.createElement(zr,{size:ye}),onClick:e.onExport?e.onExport:()=>u({...d.current,exportDialogVisible:!0})},"Export..."),!ro&&e.onDelete&&D.createElement(Lo,{compact:!0,variant:R,color:Ae,leftIcon:D.createElement(Ko,{size:ye}),onClick:()=>e.onDelete(Object.keys(i.selected))},"Delete..."),!ro&&e.onBulk&&D.createElement(Lo,{compact:!0,variant:R,color:Ae,leftIcon:D.createElement(Cr,{size:ye}),onClick:()=>e.onBulk(Object.keys(i.selected))},"Bulk...")),D.createElement(jt,{spacing:2},te&&D.createElement(Ba,{size:"xs",color:"dimmed"},cx(l,te.total),"-",mx(l,te.total)," of"," ",`${c==="estimate"?"~":""}${te.total?.toLocaleString()}`),D.createElement(Zp,{title:"Refresh",onClick:y},D.createElement(qr,{size:"1.125rem"})))),D.createElement(tx,{className:o.table},D.createElement("thead",null,D.createElement("tr",null,q&&D.createElement("th",null,D.createElement("input",{type:"checkbox",value:"checked","aria-label":"all-checkbox","data-testid":"all-checkbox",checked:B(),onChange:k=>v(k)})),oe.map(k=>D.createElement("th",{key:k.name},D.createElement(Al,{shadow:"md",width:240,position:"bottom-end"},D.createElement(Al.Target,null,D.createElement(rx,{className:o.control},D.createElement(jt,{position:"apart",noWrap:!0},D.createElement(Ba,{weight:500,size:"sm"},Se(k.name)),D.createElement(Kt,{className:o.icon},D.createElement(xr,{size:14,stroke:1.5}))))),D.createElement(Tl,{search:e.search,searchParams:k.searchParams,onPrompt:(W,Z)=>{u({...d.current,filterDialogVisible:!0,filterDialogSearchParam:W,filterDialogFilter:Z})},onChange:W=>{I(W)}}))))),!e.hideFilters&&D.createElement("tr",null,q&&D.createElement("th",null),oe.map(k=>D.createElement("th",{key:k.name},k.searchParams&&D.createElement(ix,{resourceType:me,searchParams:k.searchParams,filters:e.search.filters}))))),D.createElement("tbody",null,C?.map(k=>k&&D.createElement("tr",{key:k.id,className:o.tr,"data-testid":"search-control-row",onClick:W=>H(W,k),onAuxClick:W=>H(W,k)},q&&D.createElement("td",null,D.createElement("input",{type:"checkbox",value:"checked","data-testid":"row-checkbox","aria-label":`Checkbox for ${k.id}`,checked:!!i.selected[k.id],onChange:W=>A(W,k.id)})),oe.map(W=>D.createElement("td",{key:W.name},gl(k,W))))))),C?.length===0&&D.createElement(Ke,null,D.createElement(Kt,{style:{height:150}},D.createElement(Ba,{size:"xl",color:"dimmed"},"No results"))),te?.total!==void 0&&te.total>0&&D.createElement(Kt,{m:"md",p:"md"},D.createElement(ox,{value:ux(l),total:dx(l,te.total),onChange:k=>I(ml(l,k)),getControlProps:k=>{switch(k){case"previous":return{"aria-label":"Previous page"};case"next":return{"aria-label":"Next page"};default:return{}}}})),n&&D.createElement("div",{"data-testid":"search-error"},D.createElement("pre",{style:{textAlign:"left"}},JSON.stringify(n,void 0,2))),D.createElement(yl,{search:e.search,visible:d.current.fieldEditorVisible,onOk:k=>{I(k),u({...d.current,fieldEditorVisible:!1})},onCancel:()=>{u({...d.current,fieldEditorVisible:!1})}}),D.createElement(Dl,{search:e.search,visible:d.current.filterEditorVisible,onOk:k=>{I(k),u({...d.current,filterEditorVisible:!1})},onCancel:()=>{u({...d.current,filterEditorVisible:!1})}}),D.createElement(rl,{visible:d.current.exportDialogVisible,exportCsv:e.onExportCsv,exportTransactionBundle:e.onExportTransactionBundle,onCancel:()=>{u({...d.current,exportDialogVisible:!1})}}),D.createElement(kl,{key:i.filterDialogSearchParam?.code,visible:d.current.filterDialogVisible,title:i.filterDialogSearchParam?.code?Se(i.filterDialogSearchParam.code):"",resourceType:me,searchParam:i.filterDialogSearchParam,filter:i.filterDialogFilter,defaultValue:"",onOk:k=>{I(Oo(e.search,k.code,k.operator,k.value)),u({...d.current,filterDialogVisible:!1})},onCancel:()=>{u({...d.current,filterDialogVisible:!1})}}))}var RM=D.memo(sx);function ix(e){let o=(e.filters??[]).filter(t=>e.searchParams.find(r=>r.code===t.code));return o.length===0?D.createElement("span",null,"no filters"):D.createElement(D.Fragment,null,o.map(t=>D.createElement("div",{key:`filter-${t.code}-${t.operator}-${t.value}`},ft(t.operator),"\xA0",D.createElement(Xt,{resourceType:e.resourceType,filter:t}))))}function ux(e){return Math.floor((e.offset??0)/(e.count??wa))+1}function dx(e,o){let t=e.count??wa;return Math.ceil(o/t)}function cx(e,o){return Math.min(o,(e.offset??0)+1)}function mx(e,o){return Math.min(o,((e.offset??0)+1)*(e.count??wa))}function hx(e){let o=P(),[t,r]=_t(),[a,n]=_t(),{query:f,fields:l}=e,[s,i]=_t(),[u,d]=_t({}),c=Ol();c.current=s;let g=Ol({});g.current=u,wl(()=>{n(void 0),o.graphql(f).then(i).catch(b=>n(gx(b)))},[o,f]);function y(b,x){b.stopPropagation();let oe=b.target.checked,me={...g.current};oe?me[x]=!0:delete me[x],d(me)}function A(b){b.stopPropagation();let q=b.target.checked,oe={},me=c.current?.data.ResourceList;q&&me&&me.forEach(te=>{te.id&&(oe[te.id]=!0)}),d(oe)}function v(){let b=c.current?.data.ResourceList;if(!b||b.length===0)return!1;for(let x of b)if(x.id&&!g.current[x.id])return!1;return!0}function B(b,x){Ct(b.target)||(N(b),b.button!==1&&e.onClick&&e.onClick(new co(x,b)),b.button===1&&e.onAuxClick&&e.onAuxClick(new co(x,b)))}if(wl(()=>{o.requestSchema(e.resourceType).then(b=>{r({...b})}).catch(console.log)},[o,e.resourceType]),!t?.types[e.resourceType])return ne.createElement(xx,null);let H=e.checkboxesEnabled;return ne.createElement("div",{onContextMenu:b=>N(b),"data-testid":"search-control"},ne.createElement(Ix,null,ne.createElement("thead",null,ne.createElement("tr",null,H&&ne.createElement("th",null,ne.createElement("input",{type:"checkbox",value:"checked","aria-label":"all-checkbox","data-testid":"all-checkbox",checked:v(),onChange:b=>A(b)})),l.map(b=>ne.createElement("th",{key:b.name},b.name)))),ne.createElement("tbody",null,s?.data.ResourceList.map(b=>b&&ne.createElement("tr",{key:b.id,"data-testid":"search-control-row",onClick:x=>B(x,b),onAuxClick:x=>B(x,b)},H&&ne.createElement("td",null,ne.createElement("input",{type:"checkbox",value:"checked","data-testid":"row-checkbox","aria-label":`Checkbox for ${b.id}`,checked:!!u[b.id],onChange:x=>y(x,b.id)})),l.map(x=>ne.createElement("td",{key:x.name},ne.createElement(ol,{propertyType:x.propertyType,path:x.fhirPath,resource:b}))))))),s?.data.ResourceList.length===0&&ne.createElement("div",{"data-testid":"empty-search"},"No results"),a&&ne.createElement("div",{"data-testid":"search-error"},ne.createElement("pre",{style:{textAlign:"left"}},JSON.stringify(a,void 0,2))),e.onBulk&&ne.createElement(px,{onClick:()=>e.onBulk(Object.keys(g.current))},"Bulk..."))}var JM=ne.memo(hx);import mo from"react";function Ye(e){return mo.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 491 491",style:{width:e.size,height:e.size}},mo.createElement("title",null,"Medplum Logo"),mo.createElement("path",{fill:e.fill??"#ad7136",d:"M282 67c6-16 16-29 29-40L289 0c-22 17-37 41-43 68l17 23 19-24z"}),mo.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"}),mo.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"}),mo.createElement("path",{fill:e.fill??"#40bc26",d:"M207 220a176 176 0 01-177 43A176 176 0 01251 43l1 5c17 59 2 125-45 172z"}),mo.createElement("path",{fill:e.fill??"#33961e",d:"M252 48A421 421 0 0057 270l-27-7A176 176 0 01251 43l1 5z"}))}import{Alert as yx}from"@mantine/core";import Oa from"react";function Ro(e){let o=e.outcome?.issue||e.issues;return!o||o.length===0?null:Oa.createElement(yx,{icon:Oa.createElement(no,{size:16}),color:"red"},o.map(t=>Oa.createElement("div",{"data-testid":"text-field-error",key:t.details?.text},t.details?.text)))}import{createReference as Zt}from"@medplum/core";import Cx,{useCallback as vx}from"react";function fF(e){let o=vx((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 Cx.createElement(Ze,{value:e.patient,loadTimelineResources:o,createCommunication:(t,r,a)=>({resourceType:"Communication",status:"completed",subject:Zt(t),sender:Zt(r),sent:new Date().toISOString(),payload:[{contentString:a}]}),createMedia:(t,r,a)=>({resourceType:"Media",status:"completed",subject:Zt(t),operator:Zt(r),issued:new Date().toISOString(),content:a})})}import{Anchor as Ll,Button as Sx,createStyles as bx,NativeSelect as Px,Stack as Dx,TextInput as La}from"@mantine/core";import{getReferenceString as kx}from"@medplum/core";import U,{useEffect as El,useRef as Rl,useState as ut}from"react";var Nl=bx(e=>({section:{position:"relative",margin:"4px 4px 8px 0",padding:"6px 12px 16px 6px",border:`1.5px solid ${e.colors.gray[1]}`,borderRadius:e.radius.sm,transition:"all 0.1s"},hovering:{border:`1.5px solid ${e.colors.blue[5]}`},editing:{border:`1.5px solid ${e.colors.gray[1]}`,borderLeft:`4px solid ${e.colors.blue[5]}`},bottomActions:{position:"absolute",right:4,bottom:0,fontSize:e.fontSizes.xs,"& a":{marginLeft:8}}}));function bF(e){let o=P(),t=X(e.value),[r,a]=ut(void 0),[n,f]=ut(),[l,s]=ut(),[i,u]=ut();function d(){s(void 0)}function c(){f(void 0)}let g=Rl();if(g.current=i,El(()=>{o.requestSchema("PlanDefinition").then(a).catch(console.log)},[o]),El(()=>(u(wx(t??{resourceType:"PlanDefinition"})),document.addEventListener("mouseover",d),document.addEventListener("click",c),()=>{document.removeEventListener("mouseover",d),document.removeEventListener("click",c)}),[t]),!r||!i)return null;function y(A,v){u({...g.current,[A]:v})}return U.createElement("div",null,U.createElement($,{testid:"questionnaire-form",onSubmit:()=>e.onSubmit(i)},U.createElement(La,{label:"Plan Title",defaultValue:i.title,onChange:A=>y("title",A.currentTarget.value)}),U.createElement(Hl,{actions:i.action||[],selectedKey:n,setSelectedKey:f,hoverKey:l,setHoverKey:s,onChange:A=>y("action",A)}),U.createElement(Sx,{type:"submit"},"Save")))}function Hl(e){let{classes:o}=Nl(),t=Rl();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 U.createElement("div",{className:o.section},e.actions.map(f=>U.createElement("div",{key:f.id},U.createElement(Tx,{action:f,selectedKey:e.selectedKey,setSelectedKey:e.setSelectedKey,hoverKey:e.hoverKey,setHoverKey:e.setHoverKey,onChange:r,onRemove:()=>n(f)}))),U.createElement("div",{className:o.bottomActions},U.createElement(Ll,{href:"#",onClick:f=>{N(f),a({id:ql()})}},"Add action")))}function Tx(e){let{classes:o,cx:t}=Nl(),{action:r}=e,a=Fx(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){N(u),e.setHoverKey(e.action.id)}let i=t(o.section,{[o.editing]:n,[o.hovering]:f&&!n});return U.createElement("div",{"data-testid":r.id,className:i,onClick:l,onMouseOver:s},n?U.createElement(Ax,{action:r,actionType:a,onChange:e.onChange,selectedKey:e.selectedKey,setSelectedKey:e.setSelectedKey,hoverKey:e.hoverKey,setHoverKey:e.setHoverKey,onRemove:e.onRemove}):U.createElement(Bx,{action:r,actionType:a}),U.createElement("div",{className:o.bottomActions},U.createElement(Ll,{href:"#",onClick:u=>{u.preventDefault(),e.onRemove()}},"Remove")))}var Ra={path:"PlanDefinition.action.timing[x]",min:0,max:"1",type:[{code:"dateTime"},{code:"Period"},{code:"Range"},{code:"Timing"}]};function Bx(e){let{action:o,actionType:t}=e,[r,a]=Vl(o);return U.createElement("div",null,U.createElement("div",null,o.title||"Untitled"," ",t&&`(${t})`),o.definitionCanonical&&U.createElement("div",null,U.createElement(lo,{value:{reference:o.definitionCanonical}})),r&&U.createElement("div",null,U.createElement(xe,{property:Ra,propertyType:a,value:r})))}function Ax(e){let{action:o}=e,[t,r]=ut(e.actionType);function a(n,f){e.onChange({...o,[n]:f})}return U.createElement(Dx,{spacing:"xl"},U.createElement(La,{name:`actionTitle-${o.id}`,label:"Title",defaultValue:o.title,onChange:n=>a("title",n.currentTarget.value)}),U.createElement(La,{name:`actionDescription-${o.id}`,label:"Description",defaultValue:o.description,onChange:n=>a("description",n.currentTarget.value)}),U.createElement(Px,{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&&U.createElement(Hl,{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 U.createElement(Yt,{title:"Appointment",description:"The subject must schedule an appointment from the schedule.",resourceType:"Schedule",action:o,onChange:e.onChange});case"lab":return U.createElement(Yt,{title:"Lab",description:"The subject must complete the following lab panel.",resourceType:"ActivityDefinition",action:o,onChange:e.onChange});case"questionnaire":return U.createElement(Yt,{title:"Questionnaire",description:"The subject must complete the selected questionnaire.",resourceType:"Questionnaire",action:o,onChange:e.onChange});case"task":return U.createElement(Yt,{title:"Task",description:"The subject must complete the following task.",resourceType:"ActivityDefinition",action:o,onChange:e.onChange});default:return null}})(),U.createElement(De,{title:"Timing",description:"When the action should take place."},U.createElement(Mx,{name:"timing-"+o.id,action:o,onChange:e.onChange})))}function Yt(e){let{id:o,definitionCanonical:t}=e.action,r=t?.startsWith(e.resourceType+"/")?{reference:t}:void 0;return U.createElement(Rt,{name:o,resourceType:e.resourceType,defaultValue:r,loadOnFocus:!0,onChange:a=>{a?e.onChange({...e.action,definitionCanonical:kx(a)}):e.onChange({...e.action,definitionCanonical:void 0})}})}function Mx(e){let o=e.action,t="timing",[r,a]=Vl(o);return U.createElement(Ve,{property:Ra,name:"timing[x]",defaultValue:r,defaultPropertyType:a,onChange:(n,f)=>{e.onChange(ot(o,t,f??t,Ra,n))}})}function Fx(e){if(e.definitionCanonical?.startsWith("Schedule"))return"appointment";if(e.definitionCanonical?.startsWith("Questionnaire/"))return"questionnaire";if(e.definitionCanonical?.startsWith("ActivityDefinition/"))return"task"}function Vl(e){return Pe({type:"PlanDefinitionAction",value:e},"timing")}var Ea=1;function ql(e){if(e){if(e.startsWith("id-")){let o=parseInt(e.substring(3),10);isNaN(o)||(Ea=Math.max(Ea,o+1))}return e}return"id-"+Ea++}function wx(e){return{...e,action:Ul(e.action)}}function Ul(e){if(e)return e.map(o=>({...o,id:ql(o.id),action:Ul(o.action)}))}import{Anchor as Be,Box as qa,Button as Kx,createStyles as jx,NativeSelect as _x,Space as Zx,Textarea as Yx,TextInput as tr,Title as eI}from"@mantine/core";import{globalSchema as oI,isResource as tI}from"@medplum/core";import S,{useEffect as jl,useRef as rI,useState as or}from"react";import{Checkbox as Rx,MultiSelect as Nx,NativeSelect as Hx,Radio as Xl,TextInput as dt,Textarea as Vx}from"@mantine/core";import{capitalize as Va,formatCoding as qx,getTypedPropertyValue as eo,globalSchema as Ux,stringify as Jl}from"@medplum/core";import Y from"react";import{evalFhirPathTyped as Ox,getTypedPropertyValue as Gl}from"@medplum/core";var Na=(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))(Na||{});function Ql(e){return e.type==="choice"||e.type==="open-choice"}function zl(e,o){if(!e.enableWhen)return!0;let t=e.enableBehavior??"any";for(let r of e.enableWhen){let a=Wl(o,r.question);if(r.operator==="exists"&&!r.answerBoolean&&!a?.length){if(t==="any")return!0;continue}let{anyMatch:n,allMatch:f}=Lx(r,a,t);if(t==="any"&&n)return!0;if(t==="all"&&!f)return!1}return t!=="any"}function Wl(e,o){if(!Array.isArray(e))return;let t=e.find(r=>r.linkId===o);if(t)return t.answer;for(let r of e)if(r.item){let a=Wl(r.item,o);if(a)return a}}function Ex(e,o,t){if(t==="exists")return!!e===o.value;if(e){let r=t==="="||t==="!="?t?.replace("=","~"):t,[{value:a}]=Ox(`%actualAnswer ${r} %expectedAnswer`,[e],{actualAnswer:e,expectedAnswer:o});return a}else return!1}function Lx(e,o,t){let r=o||[],a=Gl({type:"QuestionnaireItemEnableWhen",value:e},"answer[x]"),n=!1,f=!0;for(let l of r){let s=Gl({type:"QuestionnaireResponseItemAnswer",value:l},"value[x]"),{operator:i}=e;if(Ex(s,a,i)?n=!0:f=!1,t==="any"&&n)break}return{anyMatch:n,allMatch:f}}function er(e){let o=e.item,t=e.index;function r(l,s){let i=s??0,u=e.currentResponseItems?.filter(c=>c.linkId===o.linkId)??[],d;Array.isArray(l)?d=l:d=Wx(u[0]?.answer??[],i,l),e.onChange({id:u[0].id,linkId:o.linkId,text:o.text,answer:d})}let a=o.type;if(!a)return null;let n=o.linkId;if(!n)return null;let f=o.initial&&o.initial.length>0?o.initial[0]:void 0;switch(a){case"boolean":return Y.createElement(Mt,{key:e.item.linkId,title:e.item.text,htmlFor:e.item.linkId},Y.createElement(Rx,{id:e.item.linkId,name:e.item.linkId,defaultChecked:ve(e.allResponses,o,t,e.groupSequence)??f?.valueBoolean,onChange:l=>r({valueBoolean:l.currentTarget.checked},t)}));case"decimal":return Y.createElement(dt,{type:"number",step:"any",id:n,name:n,defaultValue:ve(e.allResponses,o,t,e.groupSequence)??f?.valueDecimal,onChange:l=>r({valueDecimal:l.currentTarget.valueAsNumber},t)});case"integer":return Y.createElement(dt,{type:"number",step:1,id:n,name:n,defaultValue:ve(e.allResponses,o,t,e.groupSequence)??f?.valueInteger,onChange:l=>r({valueInteger:l.currentTarget.valueAsNumber},t)});case"date":return Y.createElement(dt,{type:"date",id:n,name:n,defaultValue:ve(e.allResponses,o,t,e.groupSequence)??f?.valueDate,onChange:l=>r({valueDate:l.currentTarget.value},t)});case"dateTime":return Y.createElement(Fe,{name:n,defaultValue:ve(e.allResponses,o,t,e.groupSequence)??f?.valueDateTime,onChange:l=>r({valueDateTime:l},t)});case"time":return Y.createElement(dt,{type:"time",id:n,name:n,defaultValue:ve(e.allResponses,o,t,e.groupSequence)??f?.valueTime,onChange:l=>r({valueTime:l.currentTarget.value},t)});case"string":case"url":return Y.createElement(dt,{id:n,name:n,defaultValue:ve(e.allResponses,o,t,e.groupSequence)??f?.valueString,onChange:l=>r({valueString:l.currentTarget.value},t)});case"text":return Y.createElement(Vx,{id:n,name:n,defaultValue:ve(e.allResponses,o,t,e.groupSequence)??f?.valueString,onChange:l=>r({valueString:l.currentTarget.value},t)});case"attachment":return Y.createElement(bt,{name:n,defaultValue:ve(e.allResponses,o,t,e.groupSequence)??f?.valueAttachment,onChange:l=>r({valueAttachment:l},t)});case"reference":return Y.createElement(Bo,{name:n,targetTypes:Xx(o),defaultValue:ve(e.allResponses,o,t,e.groupSequence)??f?.valueReference,onChange:l=>r({valueReference:l},t)});case"quantity":return Y.createElement(ke,{name:n,defaultValue:ve(e.allResponses,o,t,e.groupSequence)??f?.valueQuantity,onChange:l=>r({valueQuantity:l},t),disableWheel:!0});case"choice":case"open-choice":return Jx(o)?Y.createElement(Gx,{name:n,item:o,initial:f,allResponses:e.allResponses,index:t,groupSequence:e.groupSequence,onChangeAnswer:l=>r(l,t)}):Y.createElement(Qx,{name:n,item:o,initial:f,allResponses:e.allResponses,onChangeAnswer:l=>r(l,t)});default:return null}}function Gx(e){let{name:o,item:t,initial:r}=e,a=eo({type:"QuestionnaireItemInitial",value:r},"value"),n=[""];if(t.answerOption)for(let f of t.answerOption){let l=eo({type:"QuestionnaireItemAnswerOption",value:f},"value");n.push(Ha(l))}if(t.repeats){let{propertyName:f,data:l}=$x(e.item),s=ve(e.allResponses,t,e.index,e.groupSequence,!0)?ve(e.allResponses,t,e.index,e.groupSequence,!0):[Ha(a)];return Y.createElement(Nx,{data:l,placeholder:"Select items",searchable:!0,defaultValue:s,onChange:i=>{let u=i.map(d=>{let c=t.answerOption?.find(y=>y[f]===d),g=eo({type:"QuestionnaireItemAnswerOption",value:c},"value");return{[f]:g.value}});e.onChangeAnswer(u)}})}return Y.createElement(Hx,{id:o,name:o,onChange:f=>{let l=f.currentTarget.selectedIndex;if(l===0){e.onChangeAnswer({});return}let s=t.answerOption[l-1],i=eo({type:"QuestionnaireItemAnswerOption",value:s},"value"),u="value"+Va(i.type);e.onChangeAnswer({[u]:i.value})},defaultValue:ve(e.allResponses,t,e.index,e.groupSequence)??Ha(a),data:n})}function Qx(e){let{name:o,item:t,initial:r,onChangeAnswer:a,allResponses:n}=e;return t.answerValueSet?Y.createElement(Je,{elementDefinition:{binding:{valueSet:t.answerValueSet}},onChange:a}):Y.createElement(zx,{name:o,item:t,initial:r,allResponses:n,onChangeAnswer:a})}function zx(e){let{name:o,item:t,initial:r,onChangeAnswer:a}=e,n=Ux.types.QuestionnaireItemAnswerOption.properties["value[x]"],f=eo({type:"QuestionnaireItemInitial",value:r},"value"),l=[],s;if(t.answerOption)for(let d=0;d<t.answerOption.length;d++){let c=t.answerOption[d],g=`${o}-option-${d}`,y=eo({type:"QuestionnaireItemAnswerOption",value:c},"value");f&&Jl(y)===Jl(f)&&(s=g),l.push([g,y])}let i=ve(e.allResponses,t,e.index,e.groupSequence),u=l.find(d=>d[1].value===i)?.[0];return Y.createElement(Xl.Group,{name:o,value:u??s,onChange:d=>{let c=l.find(g=>g[0]===d);if(c){let g=c[1],y="value"+Va(g.type);a({[y]:g.value})}}},l.map(([d,c])=>Y.createElement(Xl,{key:d,id:d,value:d,label:Y.createElement(xe,{property:n,propertyType:c.type,value:c.value})})))}function Wx(e,o,t){if(o<e.length)return e[o]=t,e;for(let r=e.length;r<o;r++)e.push({});return e.push(t),e}function Xx(e){if(e.type!=="reference")return[];let o=e.extension?.filter(r=>r.url==="http://hl7.org/fhir/StructureDefinition/questionnaire-referenceResource");return!o||o.length===0?[]:o.map(r=>r.valueCodeableConcept?.coding?.[0]?.code)}function Jx(e){return!!e.extension?.some(o=>o.url==="http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl"&&o.valueCodeableConcept?.coding?.[0]?.code==="drop-down")}function $x(e){if(e.answerOption?.length===0)return{propertyName:"",data:[]};let o=e.answerOption[0],t=eo({type:"QuestionnaireItemAnswerOption",value:o},"value"),r="value"+Va(t.type),a=(e.answerOption??[]).map(n=>({value:n[r],label:r==="valueCoding"?n.valueCoding?.display:n[r]}));return{propertyName:r,data:a}}function Ha(e){if(e)return e.type==="CodeableConcept"?e.value.coding[0].display:e.type==="Coding"?e.value.display:e.value.toString()}function Kl(e,o){let t=[];for(let r of e)r.linkId===o&&t.push(r),r.item&&(t=t.concat(Kl(r.item,o)));return t}function $l(e){let o=eo({type:"QuestionnaireItemAnswerOption",value:e},"value");return qx(o?.value)||o?.value}function ve(e,o,t=0,r=0,a=!1){let f=Kl(e,o.linkId??"")[r]?.answer;return a?f?.map(l=>$l(l)):$l(f?.[t]??{})}var aI=jx(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:32,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}},movementActions:{position:"absolute",right:8,top:0,paddingTop:8,fontSize:e.fontSizes.xs,"& a":{marginLeft:8}},movementIcons:{color:e.colors.gray[5]},columnAlignment:{display:"flex",flexDirection:"column"},linkIdInput:{width:100,marginBottom:4},typeSelect:{width:100}}));function ow(e){let o=P(),t=X(e.questionnaire),[r,a]=or(),[n,f]=or(),[l,s]=or(),[i,u]=or();function d(){u(void 0)}function c(){s(void 0)}return jl(()=>{o.requestSchema("Questionnaire").then(a).catch(console.log)},[o]),jl(()=>(f(sI(t??{resourceType:"Questionnaire"})),document.addEventListener("mouseover",d),document.addEventListener("click",c),()=>{document.removeEventListener("mouseover",d),document.removeEventListener("click",c)}),[t]),!r||!n?null:S.createElement("div",null,S.createElement($,{testid:"questionnaire-form",onSubmit:()=>e.onSubmit(n)},S.createElement(_l,{item:n,selectedKey:l,setSelectedKey:s,hoverKey:i,setHoverKey:u,onChange:f}),S.createElement(Kx,{type:"submit"},"Save")))}function _l(e){let{classes:o,cx:t}=aI(),r=e.item,a=e.item,n=tI(e.item),f=n||a.type==="group",l=a.linkId??"[untitled]",s=e.selectedKey===e.item.id,i=e.hoverKey===e.item.id,u=rI();u.current=e.item;function d(x){N(x),e.setSelectedKey(e.item.id)}function c(x){N(x),e.setHoverKey(e.item.id)}function g(x){let q=u.current;e.onChange({...q,item:q.item?.map(oe=>oe.id===x.id?x:oe)})}function y(x){e.onChange({...e.item,item:[...e.item.item??[],x]})}function A(x){e.onChange({...e.item,item:e.item.item?.filter(q=>q!==x)})}function v(x,q){e.onChange({...u.current,[x]:q})}function B(x){e.onChange({...e.item,...x})}function I(x){e.onChange({...e.item,item:e.item.item?.map(q=>q===x?{...q,repeats:!q.repeats}:q)})}function H(x,q){let oe=dI(e.item.item,x,q);e.onChange({...e.item,item:oe})}let b=t(o.section,{[o.editing]:s,[o.hovering]:i&&!s});return S.createElement("div",{"data-testid":a.linkId,className:b,onClick:d,onMouseOver:c},S.createElement("div",{className:o.questionBody},s?S.createElement(S.Fragment,null,n&&S.createElement(tr,{size:"xl",defaultValue:r.title,onChange:x=>v("title",x.currentTarget.value)}),!n&&S.createElement(Yx,{autosize:!0,minRows:2,defaultValue:a.text,onChange:x=>v("text",x.currentTarget.value)}),a.type==="reference"&&S.createElement(lI,{item:a,onChange:x=>v("extension",x)}),Ql(a)&&S.createElement(nI,{item:a,onChange:x=>B(x)})):S.createElement(S.Fragment,null,r.title&&S.createElement(eI,null,r.title),a.text&&S.createElement("div",null,a.text),!f&&S.createElement(er,{item:a,index:0,allResponses:[],onChange:()=>{}}))),a.item?.map((x,q)=>S.createElement("div",{key:x.id},S.createElement(_l,{item:x,selectedKey:e.selectedKey,setSelectedKey:e.setSelectedKey,hoverKey:e.hoverKey,isFirst:q===0,isLast:q===(e.item.item??[]).length-1,setHoverKey:e.setHoverKey,onChange:g,onRemove:()=>A(x),onRepeatable:I,onMoveUp:()=>H(q,-1),onMoveDown:()=>H(q,1)}))),!f&&S.createElement("div",{className:o.topActions},s?S.createElement(S.Fragment,null,S.createElement(tr,{size:"xs",className:o.linkIdInput,defaultValue:a.linkId,onChange:x=>v("linkId",x.currentTarget.value)}),!f&&S.createElement(_x,{size:"xs",className:o.typeSelect,defaultValue:a.type,onChange:x=>v("type",x.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"}]})):S.createElement("div",null,l)),!n&&S.createElement(qa,{className:o.movementActions},S.createElement(qa,{className:o.columnAlignment},!e.isFirst&&S.createElement(Be,{href:"#",onClick:x=>{x.preventDefault(),e.onMoveUp&&e.onMoveUp()}},S.createElement(gr,{"data-testid":"up-button",size:15,className:o.movementIcons})),!e.isLast&&S.createElement(Be,{href:"#",onClick:x=>{x.preventDefault(),e.onMoveDown&&e.onMoveDown()}},S.createElement(Ir,{"data-testid":"down-button",size:15,className:o.movementIcons})))),S.createElement("div",{className:o.bottomActions},f&&S.createElement(S.Fragment,null,S.createElement(Be,{href:"#",onClick:x=>{x.preventDefault(),y({id:oo(),linkId:Qa("q"),type:"string",text:"Question"})}},"Add item"),S.createElement(Be,{href:"#",onClick:x=>{x.preventDefault(),y({id:oo(),linkId:Qa("g"),type:"group",text:"Group"})}},"Add group")),n&&S.createElement(Be,{href:"#",onClick:x=>{x.preventDefault(),y(uI())}},"Add Page"),s&&!n&&S.createElement(S.Fragment,null,S.createElement(Be,{href:"#",onClick:x=>{x.preventDefault(),e.onRepeatable&&e.onRepeatable(a)}},a.repeats?"Remove Repeatable":"Make Repeatable"),S.createElement(Be,{href:"#",onClick:x=>{x.preventDefault(),e.onRemove&&e.onRemove()}},"Remove"))))}function nI(e){let o=oI.types.QuestionnaireItemAnswerOption.properties["value[x]"],t=e.item.answerOption??[];return S.createElement("div",null,e.item.answerValueSet!==void 0?S.createElement(tr,{placeholder:"Enter Value Set",defaultValue:e.item.answerValueSet,onChange:r=>e.onChange({...e.item,answerValueSet:r.target.value})}):S.createElement(fI,{options:t,property:o,item:e.item,onChange:e.onChange}),S.createElement(qa,{display:"flex"},S.createElement(Be,{href:"#",onClick:r=>{N(r),e.onChange({...e.item,answerValueSet:void 0,answerOption:[...t,{id:oo()}]})}},"Add choice"),S.createElement(Zx,{w:"lg"}),S.createElement(Be,{href:"#",onClick:r=>{N(r),e.onChange({...e.item,answerOption:[],answerValueSet:""})}},"Add value set")))}function fI(e){return S.createElement("div",null,e.options.map(o=>{let[t,r]=Pe({type:"QuestionnaireItemAnswerOption",value:o},"value");return S.createElement("div",{key:o.id,style:{display:"flex",flexDirection:"row",justifyContent:"space-between",alignItems:"center",width:"80%"}},S.createElement("div",null,S.createElement(Ve,{key:o.id,name:"value[x]",property:e.property,defaultPropertyType:r,defaultValue:t,onChange:(a,n)=>{let f=[...e.options],l=f.findIndex(s=>s.id===o.id);f[l]={id:o.id,[n]:a},e.onChange({...e.item,answerOption:f})}})),S.createElement("div",null,S.createElement(Be,{href:"#",onClick:a=>{N(a),e.onChange({...e.item,answerOption:e.options.filter(n=>n.id!==o.id)})}},"Remove")))}))}function lI(e){let o=e.item.extension??[],t=o.filter(r=>r.url==="http://hl7.org/fhir/StructureDefinition/questionnaire-referenceResource")??[];return S.createElement(S.Fragment,null,t.map(r=>S.createElement("div",{key:r.id},S.createElement("div",{style:{display:"flex",flexDirection:"row",justifyContent:"space-between",alignItems:"center",width:"80%"}},S.createElement("div",null,S.createElement(tr,{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)}}))),S.createElement("div",null,S.createElement(Be,{href:"#",onClick:a=>{N(a),e.onChange(o.filter(n=>n.id!==r.id))}},"Remove")))),S.createElement(Be,{href:"#",onClick:r=>{N(r),e.onChange([...o,{id:oo(),url:"http://hl7.org/fhir/StructureDefinition/questionnaire-referenceResource",valueCodeableConcept:{coding:[{system:"http://hl7.org/fhir/fhir-types",display:"",code:""}]}}])}},"Add Resource"))}var Ua=1,Ga=1;function Qa(e){return e+Ua++}function oo(){return"id-"+Ga++}function sI(e){return{...e,id:e.id||oo(),item:Zl(e.item)}}function Zl(e){if(e)return e.forEach(o=>{o.id?.match(/^id-\d+$/)&&(Ga=Math.max(Ga,parseInt(o.id.substring(3),10)+1)),o.linkId?.match(/^q\d+$/)&&(Ua=Math.max(Ua,parseInt(o.linkId.substring(1),10)+1))}),e.map(o=>({...o,id:o.id||oo(),item:Zl(o.item),answerOption:iI(o.answerOption)}))}function iI(e){if(e)return e.map(o=>({...o,id:o.id||oo()}))}function uI(){return{id:oo(),linkId:Qa("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"}]}}]}}function dI(e,o,t){let r=e??[],a=o+t;if(a<0||a>=r.length)return r;let n=[...r];return[n[o],n[a]]=[n[a],n[o]],n}import{Anchor as rs,Button as No,Group as cI,Stack as mI,Stepper as Yl,Title as pI}from"@mantine/core";import{createReference as xI,getExtension as II,getReferenceString as as}from"@medplum/core";import w,{useEffect as es,useState as Ho}from"react";function ns(e){let o=P(),t=o.getProfile(),[r,a]=Ho(),n=X(e.questionnaire),[f,l]=Ho(),[s,i]=Ho(0),u=SI(n?.item??[]),d=()=>i(y=>y>=u?y:y+1),c=()=>i(y=>y<=0?y:y-1);es(()=>{o.requestSchema("Questionnaire").then(()=>o.requestSchema("QuestionnaireResponse")).then(a).catch(console.log)},[o]),es(()=>{l(n?hI(n):void 0)},[n]);function g(y){let A=f?.item??[],B={resourceType:"QuestionnaireResponse",item:ss(A,y)};l(B)}return!r||!n?null:w.createElement($,{testid:"questionnaire-form",onSubmit:()=>{e.onSubmit&&f&&e.onSubmit({...f,questionnaire:as(n),subject:e.subject,source:xI(t),authored:new Date().toISOString(),status:"completed"})}},n.title&&w.createElement(pI,null,n.title),n.item&&w.createElement(fs,{items:n.item??[],allResponses:f?.item??[],onChange:g,renderPages:u>1,activePage:s}),w.createElement(cI,{position:"right",mt:"xl"},w.createElement(gI,{activePage:s,numberOfPages:u,nextStep:d,prevStep:c,submitButtonText:e.submitButtonText})))}function fs(e){let[o,t]=Ho(za(e.items));function r(n,f){let l=o.some(i=>i.id===n),s;l?s=o.map(i=>i.id===n?f:i):s=[...o,f],t(s),e.onChange(s)}let a=e.items.map((n,f)=>e.renderPages?w.createElement(Yl.Step,{label:n.text,key:n.linkId},w.createElement(os,{key:`${n.linkId}-${f}`,item:n,index:f,allResponses:e.allResponses,currentResponseItems:o,groupSequence:e.groupSequence,setResponseItem:r})):w.createElement(os,{key:`${n.linkId}-${f}`,item:n,index:f,groupSequence:e.groupSequence,allResponses:e.allResponses,currentResponseItems:o,setResponseItem:r}));return e.renderPages?w.createElement(Yl,{active:e.activePage??0,allowNextStepsSelect:!1,p:6},a):w.createElement(mI,null,a)}function os(e){return zl(e.item,e.allResponses)?e.item.type==="display"?w.createElement("p",{key:e.item.linkId},e.item.text):e.item.type==="group"?w.createElement(ts,{key:e.item.linkId,item:e.item,allResponses:e.allResponses,currentResponseItems:e.currentResponseItems,groupSequence:e.groupSequence,onChange:o=>e.setResponseItem(o.id,o)}):w.createElement(De,{key:e.item.linkId,htmlFor:e.item.linkId,title:e.item.text??""},w.createElement(ts,{item:e.item,allResponses:e.allResponses,currentResponseItems:e.currentResponseItems,groupSequence:e.groupSequence,onChange:o=>e.setResponseItem(o.id,o)})):null}function ts(e){let o=e.item;function t(r,a){let n=a??0,f=e.currentResponseItems.filter(l=>l.linkId===o.linkId);e.onChange({id:DI(f,n),linkId:o.linkId,text:o.text,item:r})}return o.type==="group"?w.createElement(bI,{key:e.item.linkId,text:o.text??"",item:o??[],allResponses:e.allResponses,onChange:t}):w.createElement(PI,{item:e.item,key:e.item.linkId},({index:r})=>w.createElement(er,{...e,index:r}))}function gI(e){return e.activePage===0&&e.numberOfPages<=0?w.createElement(No,{type:"submit"},e.submitButtonText??"OK"):e.activePage>=e.numberOfPages?w.createElement(w.Fragment,null,w.createElement(No,{onClick:e.prevStep},"Back"),w.createElement(No,{onClick:e.nextStep,type:"submit"},e.submitButtonText??"OK")):e.activePage===0?w.createElement(w.Fragment,null,w.createElement(No,{onClick:e.nextStep},"Next")):w.createElement(w.Fragment,null,w.createElement(No,{onClick:e.prevStep},"Back"),w.createElement(No,{onClick:e.nextStep},"Next"))}function hI(e){return{resourceType:"QuestionnaireResponse",questionnaire:as(e),item:za(e.item)}}function za(e){return e?.map(yI)??[]}function yI(e){return{id:ls(),linkId:e.linkId,text:e.text,item:za(e.item),answer:e.initial?.map(vI)??[]}}var CI=1;function ls(){return"id-"+CI++}function vI(e){return{...e}}function SI(e){return e.filter(t=>II(t,"http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl")?.valueCodeableConcept?.coding?.[0]?.code==="page").length>0?e.length:0}function bI(e){let[o,t]=Ho(kI(e.item,e.allResponses)),r=e.item;return w.createElement(w.Fragment,null,[...Array(o)].map((a,n)=>w.createElement("div",{key:n},w.createElement("h3",null,e.text),w.createElement(fs,{items:r.item??[],allResponses:e.allResponses,groupSequence:n,onChange:f=>e.onChange(f,n)}))),e.item.repeats&&w.createElement(rs,{onClick:()=>t(a=>a+1)},"Add Group"))}function PI(e){let[o,t]=Ho(1),r=e.item?.repeats&&e.item.type!=="choice"&&e.item.type!=="open-choice";return w.createElement(w.Fragment,null,[...Array(o)].map((a,n)=>w.createElement(w.Fragment,{key:`${e.item.linkId}-${n}`},e.children({index:n}))),r&&w.createElement(rs,{onClick:()=>t(a=>a+1)},"Add Item"))}function DI(e,o){return e.length===0||e.length<o+1?ls():e[o].id}function kI(e,o){let t=o.filter(r=>r.linkId===e.linkId).length;return t>0?t:1}function TI(e,o){let t=ss(e.item??[],o.item??[]);return{...o,item:t,answer:o.answer&&o.answer.length>0?o.answer:e.answer}}function BI(e,o){let t=[],r=Math.max(e.length,o.length);for(let a=0;a<r;a++)e[a]&&o[a]?t.push(TI(e[a],o[a])):o[a]&&t.push(o[a]);return t}function ss(e,o){let t=[];for(let r of new Set(o.map(a=>a.linkId))){let a=e.filter(f=>f.linkId===r),n=o.filter(f=>f.linkId===r);t=t.concat(BI(a,n))}return t}import{ActionIcon as rr,Button as AI,createStyles as MI,Divider as FI,Group as ct,NativeSelect as Wa,Stack as ar,Text as wI,TextInput as OI}from"@mantine/core";import{formatRange as is,getCodeBySystem as EI}from"@medplum/core";import z,{useEffect as LI,useState as Xa}from"react";var RI=MI(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"}})),NI=["gender","age","gestationalAge","context","appliesTo","category"],HI={definition:{resourceType:"ObservationDefinition"},onSubmit:()=>{}};function bw(e){e=Object.assign(HI,e);let o=e.definition,[t,r]=Xa([]),[a,n]=Xa(1),[f,l]=Xa(1);return LI(()=>{let y=UI(o,l);r(GI(y.qualifiedInterval||[],n))},[o]),z.createElement($,{testid:"reference-range-editor",onSubmit:s},z.createElement(ar,null,t.map(y=>z.createElement(VI,{unit:zI(o.quantitativeDetails?.unit),onChange:d,onAdd:c,onRemove:g,onRemoveGroup:u,key:`group-${y.id}`,intervalGroup:y}))),z.createElement(rr,{title:"Add Group",size:"sm",onClick:y=>{N(y),i({id:`group-id-${a}`,filters:{},intervals:[]}),n(A=>A+1)}},z.createElement(xo,null)),z.createElement(ct,{position:"right"},z.createElement(AI,{type:"submit"},"Save")));function s(){let y=t.flatMap(A=>A.intervals).filter(A=>!WI(A));e.onSubmit({...o,qualifiedInterval:y})}function i(y){r(A=>[...A,y])}function u(y){r(A=>A.filter(v=>v.id!==y.id))}function d(y,A){r(v=>{v=[...v];let B=v.find(H=>H.id===y),I=B?.intervals.findIndex(H=>H.id===A.id);return I!==void 0&&B?.intervals[I]&&(B.intervals[I]=A),v})}function c(y,A){A.id===void 0&&(A.id=`id-${f}`,l(v=>v+1)),r(v=>{v=[...v];let B=v.findIndex(I=>I.id===y);if(B!==-1){let I={...v[B]};A={...A,...I.filters},I.intervals=[...I.intervals,A],v[B]=I}return v})}function g(y,A){r(v=>{v=[...v];let B=v.find(I=>I.id===y);return B&&(B.intervals=B.intervals.filter(I=>I.id!==A.id)),v})}}function VI(e){let{intervalGroup:o,unit:t}=e,{classes:r}=RI();return z.createElement(Ke,{"data-testid":o.id,className:r.section},z.createElement(ar,{spacing:"lg"},z.createElement(ct,{position:"right"},z.createElement(rr,{title:"Remove Group","data-testid":`remove-group-button-${o.id}`,key:`remove-group-button-${o.id}`,size:"sm",onClick:a=>{N(a),e.onRemoveGroup(o)}},z.createElement(ze,null))),z.createElement(qI,{intervalGroup:o,onChange:e.onChange}),z.createElement(FI,null),o.intervals.map(a=>z.createElement(ar,{key:`interval-${a.id}`,spacing:"xs"},z.createElement(ct,null,z.createElement(OI,{key:`condition-${a.id}`,"data-testid":`condition-${a.id}`,defaultValue:a.condition,label:"Condition: ",size:"sm",onChange:n=>{N(n),e.onChange(o.id,{...a,condition:n.currentTarget.value.trim()})}}),z.createElement(rr,{title:"Remove Interval",size:"sm",key:`remove-interval-${a.id}`,"data-testid":`remove-interval-${a.id}`,onClick:n=>{N(n),e.onRemove(o.id,a)}},z.createElement(ze,null))),z.createElement(rt,{onChange:n=>{e.onChange(o.id,{...a,range:n})},key:`range-${a.id}`,name:`range-${a.id}`,defaultValue:a.range}))),z.createElement(rr,{title:"Add Interval",size:"sm",onClick:a=>{N(a),e.onAdd(o.id,{range:{low:{unit:t},high:{unit:t}}})}},z.createElement(xo,null))))}function qI(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(ar,{style:{maxWidth:"50%"}},z.createElement(ct,null,z.createElement(Wa,{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(ct,{spacing:"xs"},z.createElement(wI,{component:"label",htmlFor:`div-age-${o.id}`},"Age:"),z.createElement("div",{id:`div-age-${o.id}`},z.createElement(rt,{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(Wa,{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(Wa,{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 UI(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 GI(e,o){let t=1,r={};for(let a of e){let n=QI(a);n in r||(r[n]={id:`group-id-${t++}`,filters:Object.fromEntries(NI.map(f=>[f,a[f]])),intervals:[]}),r[n].intervals.push(a)}return o(t),Object.values(r)}function QI(e){return[`gender=${e.gender}`,`age=${is(e.age)}`,`gestationalAge=${is(e.gestationalAge)}`,`context=${e.context?.text}`,`appliesTo=${e.appliesTo?.map(t=>t.text).join("+")}`,`category=${e.category}`].join(":")}function zI(e){return e&&(EI(e,"http://unitsofmeasure.org")||e.text)}function WI(e){return e.range?.low?.value===void 0&&e.range?.high?.value===void 0}import{Button as us,Grid as nr,Text as XI}from"@mantine/core";import{formatDateTime as JI,getReferenceString as $I}from"@medplum/core";import he,{useEffect as KI,useState as ds}from"react";function Ow(e){let o=P(),t=X(e.value),[r,a]=ds(!1),[n,f]=ds();if(KI(()=>{t&&!r&&(o.executeBatch(l(t)).then(f).catch(console.log),a(!0))},[o,t,r]),!t||!n)return null;return he.createElement(nr,null,t.action?.map((i,u)=>{let d=i.resource&&s(i.resource),c=d?.input?.[0]?.valueReference,g=d?.output?.[0]?.valueReference;return he.createElement(he.Fragment,{key:`action-${u}`},he.createElement(nr.Col,{span:1,p:"md"},d?.status==="completed"?he.createElement(Pr,null):he.createElement(Gr,{color:"gray"})),he.createElement(nr.Col,{span:9,p:"xs"},he.createElement(XI,{weight:500},i.title),i.description&&he.createElement("div",null,i.description),he.createElement("div",null,"Last edited by\xA0",he.createElement(Re,{value:d?.meta?.author}),"\xA0on\xA0",JI(d?.meta?.lastUpdated)),he.createElement("div",null,"Status: ",he.createElement(Vt,{status:d?.status||"unknown"}))),he.createElement(nr.Col,{span:2,p:"md"},c&&!g&&he.createElement(us,{onClick:()=>e.onStart(d,c)},"Start"),c&&g&&he.createElement(us,{onClick:()=>e.onEdit(d,c,g)},"Edit")))}));function l(i){let u=[];if(i.action)for(let d of i.action)d.resource?.reference&&u.push({request:{method:"GET",url:d.resource.reference}});return{resourceType:"Bundle",type:"batch",entry:u}}function s(i){for(let u of n?.entry)if(u.resource&&i.reference===$I(u.resource))return u.resource}}import{createStyles as tg}from"@mantine/core";import be,{useEffect as rg,useState as ag}from"react";import{stringify as YI}from"@medplum/core";function fr(e,o){let t=jI(e,o);return _I(t,e,o)}function jI(e,o){let t=e.length,r=o.length,a=t+r+1,n=1+2*a,f=n/2|0,l=new Array(n);l[f+1]={i:0,j:-1,prev:void 0,snake:!0};for(let s=0;s<a;s++){for(let i=-s;i<=s;i+=2){let u=f+i,d=u+1,c=u-1,g=l[d],y=l[c],A,v=0;i===-s||i!==s&&y.i<g.i?(v=g.i,A=g):(v=y.i+1,A=y),l[c]=void 0;let B=v-i,I={i:v,j:B,prev:ZI(A),snake:!1};for(;v<t&&B<r&&e[v]===o[B];)v++,B++;if(v>I.i&&(I={i:v,j:B,prev:I,snake:!0}),l[u]=I,v>=t&&B>=r)return l[u]}l[f+s-1]=void 0}}function _I(e,o,t){let r=[],a=e;for(a.snake&&(a=a.prev);a?.prev&&a.prev.j>=0;){let n=a.i,f=a.j;a=a.prev;let l=a.i,s=a.j,i={position:l,lines:o.slice(l,n)},u={position:s,lines:t.slice(s,f)},d;i.lines.length===0&&u.lines.length>0?d="insert":i.lines.length>0&&u.lines.length===0?d="delete":d="change",r.push({original:i,revised:u,type:d}),a.snake&&(a=a.prev)}return r}function ZI(e){return e&&!e.snake&&e.prev?e.prev:e}function cs(e){let o=e.entry.filter(r=>!!r.resource).map(r=>({meta:r.resource?.meta,lines:YI(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 eg(t,o),og(t),t}function eg(e,o){for(let t=1;t<o.length;t++){let r=fr(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 og(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 ng=tg(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 Ww(e){let{classes:o}=ng(),t=P(),[r,a]=ag(e.history);if(rg(()=>{!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 be.createElement("div",null,"Loading...");let n=r.entry?.[0]?.resource;if(!n)return null;let f=cs(r);return be.createElement("div",{className:o.container},be.createElement("table",{className:o.root},be.createElement("tbody",null,f.map((l,s)=>be.createElement("tr",{key:"row-"+s,className:l.span>0?o.startRow:o.normalRow},l.span>0&&be.createElement(be.Fragment,null,be.createElement("td",{className:o.author,rowSpan:l.span},be.createElement(je,{value:l.meta.author,link:!0})),be.createElement("td",{className:o.dateTime,rowSpan:l.span},be.createElement(se,{to:fg(n,l.meta.versionId)},lg(l.meta.lastUpdated)))),be.createElement("td",{className:o.lineNumber},s+1),be.createElement("td",{className:o.line},be.createElement("pre",{className:o.pre},l.value)))))))}function fg(e,o){return`/${e.resourceType}/${e.id}/_history/${o}`}function lg(e){let o=Math.floor((Date.now()-Date.parse(e))/1e3),t=Math.floor(o/31536e3);if(t>0)return Vo(t,"year");let r=Math.floor(o/2592e3);if(r>0)return Vo(r,"month");let a=Math.floor(o/86400);if(a>0)return Vo(a,"day");let n=Math.floor(o/3600);if(n>0)return Vo(n,"hour");let f=Math.floor(o/60);return f>0?Vo(f,"minute"):Vo(o,"second")}function Vo(e,o){return`${e} ${e===1?o:o+"s"} ago`}import{createStyles as sg}from"@mantine/core";import{stringify as ms}from"@medplum/core";import to from"react";var ig=sg(e=>({removed:{color:e.colors.red[7],textDecoration:"line-through"},added:{color:e.colors.green[7]}}));function Zw(e){let o=e.original,t=e.revised;e.ignoreMeta&&(o={...o,meta:void 0},t={...t,meta:void 0});let r=ms(o,!0).match(/[^\r\n]+/g),a=ms(t,!0).match(/[^\r\n]+/g),n=fr(r,a);return to.createElement("pre",{style:{color:"gray"}},n.map((f,l)=>to.createElement(ug,{key:"delta"+l,delta:f})))}function ug(e){let{classes:o}=ig();return to.createElement(to.Fragment,null,"...",to.createElement("br",null),e.delta.original.lines.length>0&&to.createElement("div",{className:o.removed},e.delta.original.lines.join(`
66
- `)),e.delta.revised.lines.length>0&&to.createElement("div",{className:o.added},e.delta.revised.lines.join(`
67
- `)),"...",to.createElement("br",null))}import{Table as dg}from"@mantine/core";import{formatDateTime as cg,normalizeErrorString as mg}from"@medplum/core";import ce,{useEffect as pg,useState as xg}from"react";function fO(e){let o=P(),[t,r]=xg(e.history);return pg(()=>{!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?ce.createElement(dg,{withBorder:!0,withColumnBorders:!0},ce.createElement("thead",null,ce.createElement("tr",null,ce.createElement("th",null,"Author"),ce.createElement("th",null,"Date"),ce.createElement("th",null,"Version"))),ce.createElement("tbody",null,t.entry?.map((a,n)=>ce.createElement(Ig,{key:"entry-"+n,entry:a})))):ce.createElement("div",null,"Loading...")}function Ig(e){let{response:o,resource:t}=e.entry;return t?ce.createElement("tr",null,ce.createElement("td",null,ce.createElement(je,{value:t.meta?.author,link:!0})),ce.createElement("td",null,cg(t.meta?.lastUpdated)),ce.createElement("td",null,ce.createElement(se,{to:gg(t)},t.meta?.versionId))):ce.createElement("tr",null,ce.createElement("td",{colSpan:3},mg(o?.outcome)))}function gg(e){return`/${e.resourceType}/${e.id}/_history/${e.meta?.versionId}`}import{Button as hg,createStyles as yg,Stack as Cg,Text as vg}from"@mantine/core";import{getReferenceString as Sg}from"@medplum/core";import ee,{useEffect as bg,useRef as Pg,useState as mt}from"react";var Dg=yg(e=>({container:{display:"flex",minHeight:400},info:{minWidth:300,padding:20,borderRight:`1px solid ${e.colors.gray[3]}`},selection:{minWidth:300,padding:20}}));function gO(e){let{classes:o}=Dg(),t=P(),r=X(e.schedule),a=X(e.questionnaire),[n,f]=mt(),l=Pg();l.current=n;let[s,i]=mt(da()),[u,d]=mt(),[c,g]=mt(),[y,A]=mt();if(bg(()=>{r?(f([]),t.searchResources("Slot",new URLSearchParams([["_count",(30*24).toString()],["schedule",Sg(r)],["start","gt"+kg(s)],["start","lt"+Tg(s)]])).then(f).catch(console.log)):f(void 0)},[t,r,s]),!r||!n||!a)return null;let v=r.actor?.[0];return ee.createElement("div",{className:o.container,"data-testid":"scheduler"},ee.createElement("div",{className:o.info},v&&ee.createElement(Ce,{value:v,size:"xl"}),v&&ee.createElement(vg,{size:"xl",weight:500},ee.createElement(Re,{value:v})),ee.createElement("p",null,"1 hour"),u&&ee.createElement("p",null,u.toLocaleDateString()),c&&ee.createElement("p",null,ps(new Date(c.start)))),ee.createElement("div",{className:o.selection},!u&&ee.createElement("div",null,ee.createElement("h3",null,"Select date"),ee.createElement(Of,{slots:n,onChangeMonth:i,onClick:d})),u&&!c&&ee.createElement("div",null,ee.createElement("h3",null,"Select time"),ee.createElement(Cg,null,n.map(B=>{let I=new Date(B.start);return I.getTime()>u.getTime()&&I.getTime()<u.getTime()+24*3600*1e3&&ee.createElement("div",{key:B.id},ee.createElement(hg,{variant:"outline",style:{width:150},onClick:()=>g(B)},ps(I)))}))),u&&c&&!y&&ee.createElement(ns,{questionnaire:a,submitButtonText:"Next",onSubmit:A}),u&&c&&y&&ee.createElement("div",null,ee.createElement("h3",null,"You're all set!"),ee.createElement("p",null,"Check your email for a calendar invite."))))}function kg(e){return xs(e.getTime())}function Tg(e){return xs(e.getTime()+31*24*60*60*1e3)}function xs(e){return new Date(Math.max(Date.now(),e)).toISOString()}function ps(e){return e.toLocaleTimeString([],{hour:"numeric",minute:"2-digit"})}import{createReference as lr}from"@medplum/core";import Bg from"react";function PO(e){return Bg.createElement(Ze,{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:[lr(o)],subject:o.subject,sender:lr(t),sent:new Date().toISOString(),payload:[{contentString:r}]}),createMedia:(o,t,r)=>({resourceType:"Media",status:"completed",basedOn:[lr(o)],subject:o.subject,operator:lr(t),issued:new Date().toISOString(),content:r})})}import{normalizeOperationOutcome as Kg}from"@medplum/core";import mr,{useEffect as jg,useState as bs}from"react";import{Anchor as Is,Button as Ag,Center as Mg,Group as Fg,Stack as wg,Text as Og,TextInput as Eg,Title as Lg}from"@mantine/core";import{normalizeOperationOutcome as Rg}from"@medplum/core";import we,{useState as Ng}from"react";function sr(e){let o=P(),[t,r]=Ng();return we.createElement($,{style:{maxWidth:400},onSubmit:async a=>{try{e.handleAuthResponse(await o.startNewProject({login:e.login,projectName:a.projectName}))}catch(n){r(Rg(n))}}},we.createElement(Mg,{sx:{flexDirection:"column"}},we.createElement(Ye,{size:32}),we.createElement(Lg,null,"Create project")),we.createElement(wg,{spacing:"xl"},we.createElement(Eg,{name:"projectName",label:"Project Name",placeholder:"My Project",required:!0,autoFocus:!0,error:Ie(t,"firstName")}),we.createElement(Og,{color:"dimmed",size:"xs"},"By clicking submit you agree to the Medplum"," ",we.createElement(Is,{href:"https://www.medplum.com/privacy"},"Privacy\xA0Policy")," and ",we.createElement(Is,{href:"https://www.medplum.com/terms"},"Terms\xA0of\xA0Service"),".")),we.createElement(Fg,{position:"right",mt:"xl",noWrap:!0},we.createElement(Ag,{type:"submit"},"Create project")))}import{Anchor as cr,Button as Ug,Center as Gg,Checkbox as Qg,Divider as zg,Group as ys,PasswordInput as Wg,Stack as Xg,Text as Cs,TextInput as $a}from"@mantine/core";import{normalizeOperationOutcome as vs}from"@medplum/core";import _,{useEffect as Jg,useState as $g}from"react";import Hg,{useEffect as Vg,useRef as qg,useState as Ja}from"react";function ir(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 ur(e){let o=P(),{googleClientId:t,handleGoogleCredential:r}=e,a=qg(null),[n,f]=Ja(typeof google<"u"),[l,s]=Ja(!1),[i,u]=Ja(!1);return Vg(()=>{if(typeof google>"u"){ir("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?Hg.createElement("div",{ref:a}):null}function dr(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 gs(e){typeof grecaptcha>"u"&&ir("https://www.google.com/recaptcha/api.js?render="+e)}function hs(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=dr(e.googleClientId),t=e.recaptchaSiteKey,r=P(),[a,n]=$g(),f=Ft(a,void 0);return Jg(()=>{t&&gs(t)},[t]),_.createElement($,{style:{maxWidth:400},onSubmit:async l=>{try{let s="";t&&(s=await hs(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(vs(s))}}},_.createElement(Gg,{sx:{flexDirection:"column"}},e.children),_.createElement(Ro,{issues:f}),o&&_.createElement(_.Fragment,null,_.createElement(ys,{position:"center",p:"xl",style:{height:70}},_.createElement(ur,{googleClientId:o,handleGoogleCredential:async l=>{try{e.handleAuthResponse(await r.startGoogleLogin({googleClientId:l.clientId,googleCredential:l.credential,createUser:!0}))}catch(s){n(vs(s))}}})),_.createElement(zg,{label:"or",labelPosition:"center",my:"lg"})),_.createElement(Xg,{spacing:"xl"},_.createElement($a,{name:"firstName",type:"text",label:"First name",placeholder:"First name",required:!0,autoFocus:!0,error:Ie(a,"firstName")}),_.createElement($a,{name:"lastName",type:"text",label:"Last name",placeholder:"Last name",required:!0,error:Ie(a,"lastName")}),_.createElement($a,{name:"email",type:"email",label:"Email",placeholder:"name@domain.com",required:!0,error:Ie(a,"email")}),_.createElement(Wg,{name:"password",label:"Password",autoComplete:"off",required:!0,error:Ie(a,"password")}),_.createElement(Cs,{color:"dimmed",size:"xs"},"By clicking submit you agree to the Medplum"," ",_.createElement(cr,{href:"https://www.medplum.com/privacy"},"Privacy\xA0Policy")," and ",_.createElement(cr,{href:"https://www.medplum.com/terms"},"Terms\xA0of\xA0Service"),"."),_.createElement(Cs,{color:"dimmed",size:"xs"},"This site is protected by reCAPTCHA and the Google"," ",_.createElement(cr,{href:"https://policies.google.com/privacy"},"Privacy\xA0Policy")," and ",_.createElement(cr,{href:"https://policies.google.com/terms"},"Terms\xA0of\xA0Service")," apply.")),_.createElement(ys,{position:"apart",mt:"xl",noWrap:!0},_.createElement(Qg,{name:"remember",label:"Remember me",size:"xs"}),_.createElement(Ug,{type:"submit"},"Create account")))}function l0(e){let{type:o,projectId:t,clientId:r,googleClientId:a,recaptchaSiteKey:n,onSuccess:f}=e,l=P(),[s,i]=bs(void 0),[u,d]=bs();jg(()=>{o==="patient"&&s&&l.startNewPatient({login:s,projectId:t}).then(g=>l.processCode(g.code)).then(()=>f()).catch(g=>d(Kg(g)))},[l,o,t,s,f]);function c(g){g.code?l.processCode(g.code).then(()=>f()).catch(console.log):g.login&&i(g.login)}return mr.createElement(Gt,{width:450},u&&mr.createElement("pre",null,JSON.stringify(u,null,2)),!s&&mr.createElement(Ss,{projectId:t,clientId:r,googleClientId:a,recaptchaSiteKey:n,handleAuthResponse:c},e.children),s&&o==="project"&&mr.createElement(sr,{login:s,handleAuthResponse:c}))}import{showNotification as Ls}from"@mantine/notifications";import{normalizeErrorString as Rs}from"@medplum/core";import po,{useCallback as ja,useEffect as kh,useState as _a}from"react";import{Anchor as Ps,Button as Ds,Center as ks,Checkbox as _g,Divider as Zg,Group as Ka,PasswordInput as Yg,Stack as eh,TextInput as oh}from"@mantine/core";import{normalizeOperationOutcome as th}from"@medplum/core";import j,{useCallback as pr,useState as Ts}from"react";function Bs(e){let[o,t]=Ts();return o?j.createElement(ah,{email:o,...e}):j.createElement(rh,{setEmail:t,...e})}function rh(e){let{setEmail:o,onRegister:t,handleAuthResponse:r,children:a,disableEmailAuth:n,...f}=e,l=P(),s=!e.disableGoogleAuth&&dr(e.googleClientId),i=pr(async c=>{if(!c.authorizeUrl)return!1;let g=JSON.stringify({...await l.ensureCodeChallenge(f),domain:c.domain}),y=new URL(c.authorizeUrl);return y.searchParams.set("state",g),window.location.assign(y.toString()),!0},[l,f]),u=pr(async c=>{let g=await l.post("auth/method",{email:c.email});await i(g)||o(c.email)},[l,i,o]),d=pr(async c=>{let g=await l.startGoogleLogin({...f,googleCredential:c.credential});await i(g)||r(g)},[l,f,i,r]);return j.createElement($,{style:{maxWidth:400},onSubmit:u},j.createElement(ks,{sx:{flexDirection:"column"}},a),s&&j.createElement(j.Fragment,null,j.createElement(Ka,{position:"center",p:"xl",style:{height:70}},j.createElement(ur,{googleClientId:s,handleGoogleCredential:d})),!n&&j.createElement(Zg,{label:"or",labelPosition:"center",my:"lg"})),!n&&j.createElement(oh,{name:"email",type:"email",label:"Email",placeholder:"name@domain.com",required:!0,autoFocus:!0}),j.createElement(Ka,{position:"apart",mt:"xl",spacing:0,noWrap:!0},j.createElement("div",null,t&&j.createElement(Ps,{component:"button",type:"button",color:"dimmed",onClick:t,size:"xs"},"Register")),!n&&j.createElement(Ds,{type:"submit"},"Next")))}function ah(e){let{onForgotPassword:o,handleAuthResponse:t,children:r,...a}=e,n=P(),[f,l]=Ts(),s=Ft(f,void 0),i=pr(u=>{n.startLogin({...a,password:u.password,remember:u.remember==="on"}).then(t).catch(d=>l(th(d)))},[n,a,t]);return j.createElement($,{style:{maxWidth:400},onSubmit:i},j.createElement(ks,{sx:{flexDirection:"column"}},r),j.createElement(Ro,{issues:s}),j.createElement(eh,{spacing:"xl"},j.createElement(Yg,{name:"password",label:"Password",autoComplete:"off",required:!0,autoFocus:!0,error:Ie(f,"password")})),j.createElement(Ka,{position:"apart",mt:"xl",spacing:0,noWrap:!0},o&&j.createElement(Ps,{component:"button",type:"button",color:"dimmed",onClick:o,size:"xs"},"Forgot password"),j.createElement(_g,{id:"remember",name:"remember",label:"Remember me",size:"xs",sx:{lineHeight:1}}),j.createElement(Ds,{type:"submit"},"Sign in")))}import{Avatar as nh,Center as fh,Group as lh,Stack as sh,Text as As,Title as ih,UnstyledButton as uh}from"@mantine/core";import{normalizeOperationOutcome as dh}from"@medplum/core";import Oe,{useState as ch}from"react";function Ms(e){let o=P(),[t,r]=ch();return Oe.createElement(sh,null,Oe.createElement(fh,{sx:{flexDirection:"column"}},Oe.createElement(Ye,{size:32}),Oe.createElement(ih,{order:3},"Choose profile")),Oe.createElement(Ro,{outcome:t}),e.memberships.map(a=>Oe.createElement(uh,{key:a.id,onClick:()=>{o.post("auth/profile",{login:e.login,profile:a.id}).then(e.handleAuthResponse).catch(n=>r(dh(n)))}},Oe.createElement(lh,null,Oe.createElement(nh,{radius:"xl"}),Oe.createElement("div",{style:{flex:1}},Oe.createElement(As,{size:"sm",weight:500},a.profile?.display),Oe.createElement(As,{color:"dimmed",size:"xs"},a.project?.display))))))}import{Button as mh,Center as ph,Checkbox as xh,Group as Ih,Stack as Fs,Title as gh}from"@mantine/core";import Ue from"react";function ws(e){let o=P();return Ue.createElement($,{style:{maxWidth:400},onSubmit:t=>{o.post("auth/scope",{login:e.login,scope:Object.keys(t).join(" ")}).then(e.handleAuthResponse).catch(console.log)}},Ue.createElement(Fs,null,Ue.createElement(ph,{sx:{flexDirection:"column"}},Ue.createElement(Ye,{size:32}),Ue.createElement(gh,null,"Choose scope")),Ue.createElement(Fs,null,(e.scope??"openid").split(" ").map(t=>Ue.createElement(xh,{key:t,id:t,name:t,label:t,defaultChecked:!0}))),Ue.createElement(Ih,{position:"right",mt:"xl"},Ue.createElement(mh,{type:"submit"},"Set scope"))))}import{Alert as hh,Button as yh,Center as Ch,Group as vh,Stack as Os,TextInput as Sh,Title as bh}from"@mantine/core";import{normalizeErrorString as Ph}from"@medplum/core";import Ee,{useState as Dh}from"react";function Es(e){let o=P(),[t,r]=Dh(void 0);return Ee.createElement($,{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(Ph(n)))}},Ee.createElement(Os,null,Ee.createElement(Ch,{sx:{flexDirection:"column"}},Ee.createElement(Ye,{size:32}),Ee.createElement(bh,null,"Enter MFA code")),t&&Ee.createElement(hh,{icon:Ee.createElement(no,{size:16}),title:"Error",color:"red"},t),Ee.createElement(Os,null,Ee.createElement(Sh,{name:"token",label:"MFA code",required:!0})),Ee.createElement(vh,{position:"right",mt:"xl"},Ee.createElement(yh,{type:"submit"},"Submit code"))))}function r1(e){let{login:o,chooseScopes:t,onSuccess:r,onForgotPassword:a,onRegister:n,onCode:f,...l}=e,s=P(),[i,u]=_a(void 0),[d,c]=_a(!1),[g,y]=_a(void 0),A=ja(I=>{f?f(I):s.processCode(I).then(()=>{r&&r()}).catch(H=>Ls({color:"red",message:Rs(H)}))},[s,f,r]),v=ja(I=>{c(!!I.mfaRequired),I.login&&u(I.login),I.memberships&&y(I.memberships),I.code&&(t?y(void 0):A(I.code))},[t,A]),B=ja(I=>{A(I.code)},[A]);return kh(()=>{o&&!i&&s.get("auth/login/"+o).then(v).catch(I=>Ls({color:"red",message:Rs(I)}))},[s,o,i,v]),po.createElement(Gt,{width:450},(()=>i?d?po.createElement(Es,{login:i,handleAuthResponse:v}):g?po.createElement(Ms,{login:i,memberships:g,handleAuthResponse:v}):e.projectId==="new"?po.createElement(sr,{login:i,handleAuthResponse:v}):e.chooseScopes?po.createElement(ws,{login:i,scope:e.scope,handleAuthResponse:B}):po.createElement("div",null,"Success"):po.createElement(Bs,{onForgotPassword:a,onRegister:n,handleAuthResponse:v,disableGoogleAuth:e.disableGoogleAuth,disableEmailAuth:e.disableEmailAuth,...l},e.children))())}export{Ya as AddressDisplay,rn as AddressInput,fn as AnnotationInput,db as AppShell,bo as AsyncAutocomplete,Rn as AttachmentArrayDisplay,Hn as AttachmentArrayInput,Po as AttachmentButton,Le as AttachmentDisplay,bt as AttachmentInput,Yo as BackboneElementDisplay,tt as BackboneElementInput,Of as CalendarInput,Mt as CheckboxFormSection,St as CodeInput,ko as CodeableConceptDisplay,af as CodeableConceptInput,zn as CodingDisplay,nf as CodingInput,Xn as ContactDetailDisplay,lf as ContactDetailInput,Dt as ContactPointDisplay,Ot as ContactPointInput,Ke as Container,Fe as DateTimeInput,jB as DefaultResourceTimeline,qn as DescriptionList,Un as DescriptionListEntry,xa as DiagnosticReportDisplay,Gt as Document,Rc as ElementDefinitionInputSelector,Mf as ElementDefinitionTypeInput,sA as EncounterTimeline,yo as ErrorBoundary,hx as FhirPathTable,$ as Form,De as FormSection,Mn as Header,yt as HumanNameDisplay,df as HumanNameInput,Jn as IdentifierDisplay,mf as IdentifierInput,Jr as Loading,Ye as Logo,se as MedplumLink,Lh as MedplumProvider,JM as MemoizedFhirPathTable,RM as MemoizedSearchControl,Kn as MoneyDisplay,pf as MoneyInput,Ln as Navbar,Cm as ObservationTable,Ro as OperationOutcomeAlert,Mo as Panel,fF as PatientTimeline,bF as PlanDefinitionBuilder,Zo as QuantityDisplay,ke as QuantityInput,ow as QuestionnaireBuilder,ns as QuestionnaireForm,Na as QuestionnaireItemType,ts as QuestionnaireRepeatWrapper,kt as RangeDisplay,rt as RangeInput,lo as ReferenceDisplay,Bo as ReferenceInput,bw as ReferenceRangeEditor,VI as ReferenceRangeGroupEditor,l0 as RegisterForm,Ow as RequestGroupDisplay,Yn as ResourceArrayDisplay,Pf as ResourceArrayInput,Ce as ResourceAvatar,je as ResourceBadge,Ww as ResourceBlame,Zw as ResourceDiff,iD as ResourceForm,fO as ResourceHistoryTable,Rt as ResourceInput,Re as ResourceName,xe as ResourcePropertyDisplay,Ve as ResourcePropertyInput,Ia as ResourceTable,Ze as ResourceTimeline,gO as Scheduler,Ma as SearchChangeEvent,co as SearchClickEvent,sx as SearchControl,yl as SearchFieldEditor,Dl as SearchFilterEditor,Fa as SearchLoadEvent,PO as ServiceRequestTimeline,r1 as SignInForm,Vt as StatusBadge,Xf as Timeline,_e as TimelineItem,Af as TimingInput,Sa as addDateFilterBetween,DA as addField,Oo as addFilter,il as addLastMonthFilter,ba as addMissingFilter,dl as addNextMonthFilter,ul as addThisMonthFilter,ll as addTodayFilter,sl as addTomorrowFilter,cl as addYearToDateFilter,fl as addYesterdayFilter,Se as buildFieldNameString,PA as clearFilters,Wt as clearFiltersOnField,wd as convertIsoToLocal,Od as convertLocalToIso,ir as createScriptTag,nl as deleteFilter,Ie as getErrorsForInput,Ft as getIssuesForExpression,Wc as getMonthString,ft as getOpString,hs as getRecaptcha,Il as getSearchOperators,pl as getSortField,da as getStartMonth,lg as getTimeString,Pe as getValueAndType,gs as initRecaptcha,Ql as isChoiceQuestion,zl as isQuestionEnabled,xl as isSortDescending,Fn as parseForm,gl as renderValue,nt as setFilters,Cp as setOffset,ml as setPage,ot as setPropertyValue,Pa as setSort,Kf as sortByDateAndPriority,kA as toggleSort,P as useMedplum,zo as useMedplumContext,Qe as useMedplumNavigate,xt as useMedplumProfile,X as useResource};
64
+ }`.replace(/\s+/g," ")}function Xi(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),$i(Ji(t),o).slice(0,5)}function Ji(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 $i(e,o){return e.sort((t,r)=>Tn(r,o)-Tn(t,o))}function Tn(e,o){let t=0;if(e.identifier)for(let r of e.identifier)t=Math.max(t,Bn(r.value,o));if(e.resourceType==="Patient"&&e.name)for(let r of e.name)t=Math.max(t,Bn(Ni(r),o));return t}function Bn(e,o){if(!e)return 0;let t=e.toLowerCase().indexOf(o.toLowerCase());return t<0?0:100-t}var ou=ji(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 On(e){let o=Qo(),{medplum:t,profile:r,navigate:a}=o,n=t.getLogins(),{classes:f,cx:s}=ou(),[l,i]=eu(!1);return Q.createElement(_i,{height:60,p:8,style:{zIndex:101}},Q.createElement(Ct,{position:"apart"},Q.createElement(Ct,{spacing:"xs"},Q.createElement(Fn,{className:f.logoButton,onClick:e.navbarToggle},e.logo),Q.createElement(Mn,{pathname:e.pathname,searchParams:e.searchParams})),Q.createElement(Ne,{width:260,shadow:"xl",position:"bottom-end",transitionProps:{transition:"pop-top-right"},opened:l,onClose:()=>i(!1)},Q.createElement(Ne.Target,null,Q.createElement(Fn,{className:s(f.user,{[f.userActive]:l}),onClick:()=>i(u=>!u)},Q.createElement(Ct,{spacing:7},Q.createElement(Ce,{value:r,radius:"xl",size:24}),Q.createElement(Ko,{size:"sm",className:f.userName},Yi(r?.name?.[0])),Q.createElement(Dr,{size:12,stroke:1.5})))),Q.createElement(Ne.Dropdown,null,Q.createElement(Zi,{align:"center",p:"xl"},Q.createElement(Ce,{size:"xl",radius:100,value:o.profile}),Q.createElement(ht,{value:o.profile?.name?.[0]}),Q.createElement(Ko,{color:"dimmed",size:"xs"},t.getActiveLogin()?.project.display)),n.length>1&&Q.createElement(Ne.Divider,null),n.map(u=>u.profile.reference!==wn(o.profile)&&Q.createElement(Ne.Item,{key:u.profile.reference,onClick:()=>{t.setActiveLogin(u).then(()=>window.location.reload()).catch(console.log)}},Q.createElement(Ct,null,Q.createElement(Ki,{radius:"xl"}),Q.createElement("div",{style:{flex:1}},Q.createElement(Ko,{size:"sm",weight:500},u.profile.display),Q.createElement(Ko,{color:"dimmed",size:"xs"},u.project.display))))),Q.createElement(Ne.Divider,null),Q.createElement(Ne.Item,{icon:Q.createElement(Qr,{size:14,stroke:1.5}),onClick:()=>a("/signin")},"Add another account"),Q.createElement(Ne.Item,{icon:Q.createElement(go,{size:14,stroke:1.5}),onClick:()=>a(`/${wn(r)}`)},"Account settings"),Q.createElement(Ne.Item,{icon:Q.createElement(Lr,{size:14,stroke:1.5}),onClick:async()=>{await t.signOut(),a("/signin")}},"Sign out"),Q.createElement(Ko,{size:"xs",color:"dimmed",align:"center"},e.version)))))}import{Button as bu,createStyles as Pu,Navbar as jr,ScrollArea as Du,Space as ku,Text as Tu}from"@mantine/core";import fe,{useState as Bu}from"react";import{Button as nu,Group as fu,Modal as lu,NativeSelect as su,Stack as iu,TextInput as uu}from"@mantine/core";import{showNotification as Ln}from"@mantine/notifications";import{deepClone as du,normalizeErrorString as cu}from"@medplum/core";import Xe from"react";import au from"react";function En(e){let o={};for(let t of Array.from(e.elements))t instanceof HTMLInputElement?tu(o,t):t instanceof HTMLTextAreaElement?o[t.name]=t.value:t instanceof HTMLSelectElement&&ru(o,t);return o}function tu(e,o){o.disabled||(o.type==="checkbox"||o.type==="radio")&&!o.checked||(e[o.name]=o.value)}function ru(e,o){e[o.name]=o.value}function $(e){return au.createElement("form",{style:e.style,"data-testid":e.testid,onSubmit:o=>{o.preventDefault();let t=En(o.target);e.onSubmit&&e.onSubmit(t)}},e.children)}function Rn(e){let o=P(),t=o.getUserConfiguration();function r(a){let{menuname:n,bookmarkname:f}=a,s=`${e.pathname}?${e.searchParams.toString()}`,l=du(t);l.menu?.find(({title:u})=>u===n)?.link?.push({name:f,target:s}),o.updateResource(l).then(u=>{t.menu=u.menu,o.dispatchEvent({type:"change"}),Ln({color:"green",message:"Success"}),e.onOk()}).catch(u=>{Ln({color:"red",message:cu(u)})})}return Xe.createElement(lu,{title:"Add Bookmark",closeButtonProps:{"aria-label":"Close"},opened:e.visible,onClose:e.onCancel},Xe.createElement($,{onSubmit:r},Xe.createElement(iu,null,Xe.createElement(mu,{config:t}),Xe.createElement(uu,{label:"Bookmark Name",type:"text",name:"bookmarkname",placeholder:"bookmark name",withAsterisk:!0}),Xe.createElement(fu,{position:"right"},Xe.createElement(nu,{mt:"sm",type:"submit"},"OK")))))}function mu(e){function o(r){return r?.menu?.map(a=>a.title)}let t=o(e.config);return Xe.createElement(su,{name:"menuname",defaultValue:t[0],label:"Select Menu Option",placeholder:"Menu",data:t,withAsterisk:!0})}import yu,{useState as Cu}from"react";import pu,{useCallback as xu}from"react";function Kr(e){return typeof e.code=="string"?e.code:JSON.stringify(e)}function Iu(e){return typeof e.display=="string"?e.display:Kr(e)}function gu(e){return{value:Kr(e),label:Iu(e),resource:e}}function hu(e){return{code:e,display:e}}function Je(e){let o=P(),{elementDefinition:t,creatable:r,clearable:a,...n}=e,f=xu(async(s,l)=>{if(!t.binding)return[];let i=t.binding.valueSet,d=(await o.searchValueSet(i,s,{signal:l})).expansion?.contains,c=[];for(let g of d)g.code&&!c.some(y=>y.code===g.code)&&c.push(g);return c},[o,t]);return pu.createElement(So,{...n,creatable:r??!0,clearable:a??!0,toKey:Kr,toOption:gu,loadOptions:f,onCreate:hu,getCreateLabel:r===!1?void 0:s=>`+ Create ${s}`})}function vt(e){let[o,t]=Cu(e.defaultValue);function r(a){let n=a[0],f=Su(n);t(f),e.onChange&&e.onChange(f)}return yu.createElement(Je,{elementDefinition:e.property,name:e.name,placeholder:e.placeholder,defaultValue:vu(o),onChange:r,creatable:e.creatable,maxSelectedValues:e.maxSelectedValues??1,clearSearchOnChange:e.clearSearchOnChange,clearable:e.clearable})}function vu(e){return e?{code:e}:void 0}function Su(e){return e?.code}var Nn=Pu(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 Hn(e){let{classes:o}=Nn(),t=Qe(),r=Fu(e.pathname,e.searchParams,e.menus),[a,n]=Bu(!1);function f(l,i){l.stopPropagation(),l.preventDefault(),t(i),window.innerWidth<768&&e.closeNavbar()}function s(l){l&&t(`/${l}`)}return fe.createElement(fe.Fragment,null,fe.createElement(jr,{width:{sm:250},p:"xs"},fe.createElement(Du,null,fe.createElement(jr.Section,{mb:"sm"},fe.createElement(vt,{key:window.location.pathname,name:"resourceType",placeholder:"Resource Type",property:{binding:{valueSet:"https://medplum.com/fhir/ValueSet/resource-types"}},onChange:l=>s(l),creatable:!1,maxSelectedValues:0,clearSearchOnChange:!0,clearable:!1})),fe.createElement(jr.Section,{grow:!0},e.menus?.map(l=>fe.createElement(fe.Fragment,{key:`menu-${l.title}`},fe.createElement(Tu,{className:o.menuTitle},l.title),l.links?.map(i=>fe.createElement(Au,{key:i.href,to:i.href,active:i.href===r?.href,onClick:u=>f(u,i.href)},fe.createElement(Mu,{to:i.href,icon:i.icon}),fe.createElement("span",null,i.label))))),e.displayAddBookmark&&fe.createElement(bu,{variant:"subtle",size:"xs",mt:"xl",leftIcon:fe.createElement(Vr,{size:"0.75rem"}),onClick:()=>n(!0)},"Add Bookmark")))),e.pathname&&e.searchParams&&fe.createElement(Rn,{pathname:e.pathname,searchParams:e.searchParams,visible:a,onOk:()=>n(!1),onCancel:()=>n(!1)}))}function Au(e){let{classes:o,cx:t}=Nn();return fe.createElement(se,{onClick:e.onClick,to:e.to,className:t(o.link,{[o.linkActive]:e.active})},e.children)}function Mu(e){return e.icon?e.icon:fe.createElement(ku,{w:30})}function Fu(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 s=wu(e,o,f.href);s>a&&(a=s,r=f)}return r}function wu(e,o,t){let r=new URL(t,"https://example.com");if(e!==r.pathname)return 0;let a=["_count","_offset"];for(let[f,s]of r.searchParams.entries())if(!a.includes(f)&&o.get(f)!==s)return 0;let n=1;for(let[f,s]of o.entries())a.includes(f)||r.searchParams.get(f)===s&&n++;return n}function gb(e){let o=Eu(),[t,r]=Ru(localStorage.navbarOpen==="true"),a=P(),n=pt();function f(i){localStorage.navbarOpen=i.toString(),r(i)}function s(){f(!1)}function l(){f(!t)}return a.isLoading()?no.createElement(Jr,null):no.createElement(Ou,{styles:{main:{background:o.colorScheme==="dark"?o.colors.dark[8]:o.colors.gray[0]}},padding:0,fixed:!0,header:n&&no.createElement(On,{pathname:e.pathname,searchParams:e.searchParams,logo:e.logo,version:e.version,navbarToggle:l}),navbar:n&&t?no.createElement(Hn,{pathname:e.pathname,searchParams:e.searchParams,menus:e.menus,closeNavbar:s,displayAddBookmark:e.displayAddBookmark}):void 0},no.createElement(ho,{key:`${e.pathname}?${e.searchParams?.toString()}`},no.createElement(Lu,{fallback:no.createElement(Jr,null)},e.children)))}import _r from"react";import{Anchor as Nu}from"@mantine/core";import $e from"react";function Ee(e){let o=e.value,{contentType:t,url:r,title:a}=o??{};return r?$e.createElement("div",{"data-testid":"attachment-display"},t?.startsWith("image/")&&$e.createElement("img",{"data-testid":"attachment-image",style:{maxWidth:e.maxWidth},src:r,alt:o?.title}),t?.startsWith("video/")&&$e.createElement("video",{"data-testid":"attachment-video",style:{maxWidth:e.maxWidth},controls:!0},$e.createElement("source",{type:t,src:r})),t==="application/pdf"&&!a?.endsWith(".pdf")&&$e.createElement("div",{"data-testid":"attachment-pdf",style:{maxWidth:e.maxWidth,minHeight:400}},$e.createElement("iframe",{width:"100%",height:"400",src:r+"#navpanes=0",allowFullScreen:!0,frameBorder:0,seamless:!0})),$e.createElement("div",{"data-testid":"download-link",style:{padding:"2px 16px 16px 16px"}},$e.createElement(Nu,{href:o?.url,"data-testid":"attachment-details",target:"_blank",rel:"noopener noreferrer"},o?.title||"Download"))):null}function Vn(e){return _r.createElement("div",null,e.values?.map((o,t)=>_r.createElement("div",{key:"attatchment-"+t},_r.createElement(Ee,{value:o,maxWidth:e.maxWidth}))))}import{ActionIcon as qn}from"@mantine/core";import ie,{useRef as Vu,useState as qu}from"react";import Zr,{useRef as Hu}from"react";function bo(e){let o=P(),t=Hu(null);function r(f){N(f),t.current?.click()}function a(f){N(f);let s=f.target.files;s&&Array.from(s).forEach(n)}function n(f){if(!f||!f.name)return;e.onUploadStart&&e.onUploadStart();let l=f.name,i=f.type||"application/octet-stream";o.createBinary(f,l,i,e.onUploadProgress).then(u=>{e.onUpload({contentType:u.contentType,url:u.url,title:l})}).catch(u=>{alert(u.issue?.[0]?.details?.text)})}return Zr.createElement(Zr.Fragment,null,Zr.createElement("input",{type:"file","data-testid":"upload-file-input",style:{display:"none"},ref:t,onChange:f=>a(f)}),e.children({onClick:r}))}function Un(e){let[o,t]=qu(e.defaultValue??[]),r=Vu();r.current=o;function a(n){t(n),e.onChange&&e.onChange(n)}return ie.createElement("table",{style:{width:"100%"}},ie.createElement("colgroup",null,ie.createElement("col",{width:"97%"}),ie.createElement("col",{width:"3%"})),ie.createElement("tbody",null,o.map((n,f)=>ie.createElement("tr",{key:`${f}-${o.length}`},ie.createElement("td",null,ie.createElement(Ee,{value:n,maxWidth:200})),ie.createElement("td",null,ie.createElement(qn,{title:"Remove",size:"sm",onClick:s=>{N(s);let l=o.slice();l.splice(f,1),a(l)}},ie.createElement(ze,null))))),ie.createElement("tr",null,ie.createElement("td",null),ie.createElement("td",null,ie.createElement(bo,{onUpload:n=>{a([...r.current,n])}},n=>ie.createElement(qn,{...n,title:"Add",size:"sm",color:"green"},ie.createElement(Wo,{size:16})))))))}import{Button as Gn}from"@mantine/core";import Po,{useState as Uu}from"react";function St(e){let[o,t]=Uu(e.defaultValue);function r(a){t(a),e.onChange&&e.onChange(a)}return o?Po.createElement(Po.Fragment,null,Po.createElement(Ee,{value:o,maxWidth:200}),Po.createElement(Gn,{onClick:a=>{N(a),r(void 0)}},"Remove")):Po.createElement(bo,{onUpload:r},a=>Po.createElement(Gn,{...a},"Upload..."))}import{getPropertyDisplayName as fd,globalSchema as ld}from"@medplum/core";import Yo from"react";var bt=["meta","implicitRules","language","text","contained","extension","modifierExtension"];import{createStyles as Gu}from"@mantine/core";import jo from"react";var Qu=Gu(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 Qn(e){let{children:o,compact:t}=e,{classes:r,cx:a}=Qu();return jo.createElement("dl",{className:a(r.root,{[r.compact]:t})},o)}function zn(e){return jo.createElement(jo.Fragment,null,jo.createElement("dt",null,e.term),jo.createElement("dd",null,e.children))}import{ActionIcon as _u,Box as Zu,CopyButton as Yu,Tooltip as ed}from"@mantine/core";import{formatDateTime as od,formatPeriod as td,formatTiming as rd,getElementDefinitionTypeName as ad,getTypedPropertyValue as nd,PropertyType as V}from"@medplum/core";import O from"react";import{formatCodeableConcept as zu}from"@medplum/core";import Wn from"react";function Do(e){return Wn.createElement(Wn.Fragment,null,zu(e.value))}import{formatCoding as Wu}from"@medplum/core";import Xn from"react";function Jn(e){return Xn.createElement(Xn.Fragment,null,Wu(e.value))}import Yr from"react";import $n 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("]")),$n.createElement($n.Fragment,null,t.join("").trim())}function Kn(e){let o=e.value;return o?Yr.createElement(Yr.Fragment,null,o.name,o.name&&": ",o.telecom?.map(t=>Yr.createElement(Pt,{key:`telecom-${o.name}-${t.value}`,value:t}))):null}import Xu from"react";function jn(e){return Xu.createElement("div",null,e.value?.system,": ",e.value?.value)}import{formatMoney as Ju}from"@medplum/core";import _n from"react";function Zn(e){return _n.createElement(_n.Fragment,null,Ju(e.value))}import{formatQuantity as $u}from"@medplum/core";import Yn from"react";function _o(e){return Yn.createElement(Yn.Fragment,null,$u(e.value))}import{formatRange as Ku}from"@medplum/core";import ef from"react";function Dt(e){return ef.createElement(ef.Fragment,null,Ku(e.value))}import kt from"react";function of(e){let o=e.value;return o?kt.createElement(kt.Fragment,null,kt.createElement(_o,{value:o.numerator}),"\xA0/\xA0",kt.createElement(_o,{value:o.denominator})):null}import{stringify as ju}from"@medplum/core";import ea from"react";function fo(e){if(!e.value)return null;let o=e.value.display||e.value.reference||ju(e.value);return e.link!==!1&&e.value.reference?ea.createElement(se,{to:e.value},o):ea.createElement(ea.Fragment,null,o)}import Tt from"react";function tf(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(xe,{arrayElement:!0,property:o,propertyType:r,value:a,ignoreMissingValues:e.ignoreMissingValues,link:e.link}))))}function xe(e){let{property:o,propertyType:t,value:r}=e;if(o?.path?.endsWith(".id"))return O.createElement(Zu,{component:"div",sx:{display:"flex",gap:3,alignItems:"center"}},r,O.createElement(Yu,{value:r,timeout:2e3},({copied:n,copy:f})=>O.createElement(ed,{label:n?"Copied":"Copy",withArrow:!0,position:"right"},O.createElement(_u,{color:n?"teal":"gray",onClick:f},n?O.createElement(zo,{size:"1rem"}):O.createElement(Tr,{size:"1rem"})))));if(o?.max==="*"&&!e.arrayElement)return t===V.Attachment?O.createElement(Vn,{values:r,maxWidth:e.maxWidth}):O.createElement(tf,{property:o,values:r,ignoreMissingValues:e.ignoreMissingValues,link:e.link});switch(t){case V.boolean:return O.createElement(O.Fragment,null,r===void 0?"":(!!r).toString());case V.SystemString:case V.string:return O.createElement("div",{style:{whiteSpace:"pre-wrap"}},r);case V.code:case V.date:case V.decimal:case V.integer:case V.positiveInt:case V.unsignedInt:case V.uri:case V.url:return O.createElement(O.Fragment,null,r);case V.canonical:return O.createElement(fo,{value:{reference:r},link:e.link});case V.dateTime:case V.instant:return O.createElement(O.Fragment,null,od(r));case V.markdown:return O.createElement("pre",null,r);case V.Address:return O.createElement(tn,{value:r});case V.Annotation:return O.createElement(O.Fragment,null,r?.text);case V.Attachment:return O.createElement(Ee,{value:r,maxWidth:e.maxWidth});case V.CodeableConcept:return O.createElement(Do,{value:r});case V.Coding:return O.createElement(Jn,{value:r});case V.ContactDetail:return O.createElement(Kn,{value:r});case V.ContactPoint:return O.createElement(Pt,{value:r});case V.HumanName:return O.createElement(ht,{value:r});case V.Identifier:return O.createElement(jn,{value:r});case V.Money:return O.createElement(Zn,{value:r});case V.Period:return O.createElement(O.Fragment,null,td(r));case V.Quantity:case V.Duration:return O.createElement(_o,{value:r});case V.Range:return O.createElement(Dt,{value:r});case V.Ratio:return O.createElement(of,{value:r});case V.Reference:return O.createElement(fo,{value:r,link:e.link});case V.Timing:return O.createElement(O.Fragment,null,rd(r));case V.Dosage:case V.UsageContext:return O.createElement(Zo,{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 O.createElement(Zo,{value:{type:ad(o),value:r},compact:!0,ignoreMissingValues:e.ignoreMissingValues})}}function be(e,o){let t=nd(e,o);return t?Array.isArray(t)?[t.map(r=>r.value),t[0].type]:[t.value,t.type]:[void 0,"undefined"]}function Zo(e){let o=e.value,t=o.value;if(!t)return null;let r=o.type,a=ld.types[r];return a?typeof t=="object"&&"name"in t&&Object.keys(t).length===1&&typeof t.name=="string"?Yo.createElement("div",null,t.name):Yo.createElement(Qn,{compact:e.compact},Object.entries(a.properties).map(n=>{let f=n[0];if(bt.includes(f))return null;let s=n[1];s.path||(s.path=r+"."+f);let[l,i]=be(o,f);return e.ignoreMissingValues&&(!l||Array.isArray(l)&&l.length===0)?null:Yo.createElement(zn,{key:f,term:fd(f)},Yo.createElement(xe,{property:s,propertyType:i,value:l,ignoreMissingValues:e.ignoreMissingValues,link:e.link}))})):Yo.createElement("div",null,r,"\xA0not implemented")}import{Stack as Uc}from"@mantine/core";import{getPropertyDisplayName as Ef,globalSchema as Gc}from"@medplum/core";import Bo,{useState as Qc}from"react";import{Group as sd,Input as id}from"@mantine/core";import Bt from"react";function At(e){return Bt.createElement(sd,{noWrap:!0},Bt.createElement("div",null,e.children),Bt.createElement("div",null,Bt.createElement(id.Wrapper,{id:e.htmlFor,label:e.title,description:e.description,withAsterisk:e.withAsterisk},(()=>null)())))}import{Input as ud}from"@mantine/core";import dd from"react";function Ie(e,o){return e?.issue?.filter(t=>rf(t.expression?.[0],o))?.map(t=>t.details?.text)?.join(`
65
+ `)}function Mt(e,o){return e?.issue?.filter(t=>rf(t.expression?.[0],o))}function rf(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 dd.createElement(ud.Wrapper,{id:e.htmlFor,label:e.title,description:e.description,withAsterisk:e.withAsterisk,error:Ie(e.outcome,e.htmlFor)},e.children)}import{Button as af,Group as cd,Stack as md,TextInput as nf}from"@mantine/core";import{capitalize as pd,deepClone as xd}from"@medplum/core";import Ae,{useEffect as Id,useState as ff}from"react";function xD(e){let o=P(),t=X(e.defaultValue),[r,a]=ff(),[n,f]=ff();return Id(()=>{t&&(f(xd(t)),o.requestSchema(t.resourceType).then(a).catch(console.log))},[o,t]),!r||!n?Ae.createElement("div",null,"Loading..."):Ae.createElement("form",{noValidate:!0,autoComplete:"off",onSubmit:s=>{s.preventDefault(),e.onSubmit&&e.onSubmit(n)}},Ae.createElement(md,{mb:"xl"},Ae.createElement(Pe,{title:"Resource Type",htmlFor:"resourceType",outcome:e.outcome},Ae.createElement(nf,{name:"resourceType",defaultValue:n.resourceType,disabled:!0})),Ae.createElement(Pe,{title:"ID",htmlFor:"id",outcome:e.outcome},Ae.createElement(nf,{name:"id",defaultValue:n.id,disabled:!0}))),Ae.createElement(ot,{typeName:n.resourceType,defaultValue:n,outcome:e.outcome,onChange:f}),Ae.createElement(cd,{position:"right",mt:"xl"},Ae.createElement(af,{type:"submit"},"OK"),e.onDelete&&Ae.createElement(af,{variant:"outline",color:"red",type:"button",onClick:()=>{e.onDelete(n)}},"Delete")))}function et(e,o,t,r,a){let n=r.type;if(n.length>1)for(let f of n){let s=o.replace("[x]",pd(f.code));s in e&&delete e[s]}return e[t]=a,e}import{Checkbox as wc,Group as Oc,NativeSelect as Ec,Textarea as Lc,TextInput as ia}from"@mantine/core";import{capitalize as Rc,getElementDefinitionTypeName as Nc,PropertyType as E}from"@medplum/core";import G,{useState as Hc}from"react";import gd,{useState as hd}from"react";function lf(e){let[o,t]=hd(e.defaultValue);function r(a){let n=Cd(a);t(n),e.onChange&&e.onChange(n)}return gd.createElement(Je,{elementDefinition:e.property,name:e.name,placeholder:e.placeholder,defaultValue:o&&yd(o),maxSelectedValues:1,onChange:r})}function yd(e){return e.coding?.map(o=>({system:o.system,code:o.code,display:o.display}))}function Cd(e){if(e.length!==0)return{coding:e.map(o=>({system:o.system,code:o.code,display:o.display}))}}import vd,{useState as Sd}from"react";function sf(e){let[o,t]=Sd(e.defaultValue);function r(a){let n=a[0],f=n&&Pd(n);t(f),e.onChange&&e.onChange(f)}return vd.createElement(Je,{elementDefinition:e.property,name:e.name,placeholder:e.placeholder,defaultValue:o&&bd(o),maxSelectedValues:1,onChange:r})}function bd(e){return{system:e.system,code:e.code,display:e.display}}function Pd(e){return{system:e.system,code:e.code,display:e.display}}import{Group as Ad,TextInput as Md}from"@mantine/core";import oa,{useRef as Fd,useState as wd}from"react";import{Group as Dd,NativeSelect as uf,TextInput as kd}from"@mantine/core";import Ft,{useRef as Td,useState as Bd}from"react";function wt(e){let[o,t]=Bd(e.defaultValue),r=Td();r.current=o;function a(l){l&&Object.keys(l).length===0&&(l=void 0),t(l),e.onChange&&e.onChange(l)}function n(l){let i={...r.current,system:l};l||delete i.system,a(i)}function f(l){let i={...r.current,use:l};l||delete i.use,a(i)}function s(l){let i={...r.current,value:l};l||delete i.value,a(i)}return Ft.createElement(Dd,{spacing:"xs",grow:!0,noWrap:!0},Ft.createElement(uf,{"data-testid":"system",defaultValue:o?.system,onChange:l=>n(l.currentTarget.value),data:["","email","phone","fax","pager","sms","other"]}),Ft.createElement(uf,{"data-testid":"use",defaultValue:o?.use,onChange:l=>f(l.currentTarget.value),data:["","home","work","temp","old","mobile"]}),Ft.createElement(kd,{placeholder:"Value",defaultValue:o?.value,onChange:l=>s(l.currentTarget.value)}))}function df(e){let[o,t]=wd(e.defaultValue),r=Fd();r.current=o;function a(s){t(s),e.onChange&&e.onChange(s)}function n(s){let l={...r.current,name:s};s||delete l.name,a(l)}function f(s){let l={...r.current,telecom:s&&[s]};s||delete l.telecom,a(l)}return oa.createElement(Ad,{spacing:"xs",grow:!0,noWrap:!0},oa.createElement(Md,{"data-testid":e.name+"-name",name:e.name+"-name",placeholder:"Name",style:{width:180},defaultValue:o?.name,onChange:s=>n(s.currentTarget.value)}),oa.createElement(wt,{name:e.name+"-telecom",defaultValue:o?.telecom?.[0],onChange:f}))}import{TextInput as Od}from"@mantine/core";import{isValidDate as cf}from"@medplum/core";import Ed from"react";function Me(e){return Ed.createElement(Od,{id:e.name,name:e.name,"data-autofocus":e.autoFocus,"data-testid":e.name,placeholder:e.placeholder,required:e.required,type:Nd(),defaultValue:Ld(e.defaultValue),autoFocus:e.autoFocus,error:Ie(e.outcome,e.name),onChange:o=>{if(e.onChange){let t=o.currentTarget.value;e.onChange(Rd(t))}}})}function Ld(e){if(!e)return"";let o=new Date(e);return cf(o)?o.toLocaleDateString("sv")+"T"+o.toLocaleTimeString("sv"):""}function Rd(e){if(!e)return"";let o=new Date(e);return cf(o)?o.toISOString():""}function Nd(){return"datetime-local"}import{JsonInput as Hd}from"@mantine/core";import{stringify as Vd}from"@medplum/core";import qd from"react";function mf(e){return qd.createElement(Hd,{id:e.name,name:e.name,"data-testid":"extension-input",defaultValue:Vd(e.defaultValue),deserialize:JSON.parse,onChange:o=>{e.onChange&&e.onChange(JSON.parse(o))}})}import{Group as Ud,NativeSelect as Gd,TextInput as Ot}from"@mantine/core";import ko,{useRef as Qd,useState as zd}from"react";function pf(e){let[o,t]=zd(e.defaultValue),r=Qd();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 s(u){a({...r.current,given:u?u.split(" "):void 0})}function l(u){a({...r.current,family:u||void 0})}function i(u){a({...r.current,suffix:u?u.split(" "):void 0})}return ko.createElement(Ud,{spacing:"xs",grow:!0,noWrap:!0},ko.createElement(Gd,{defaultValue:o?.use,name:e.name+"-use","data-testid":"use",onChange:u=>n(u.currentTarget.value),data:["","temp","old","usual","official","nickname","anonymous","maiden"]}),ko.createElement(Ot,{placeholder:"Prefix",name:e.name+"-prefix",defaultValue:o?.prefix?.join(" "),onChange:u=>f(u.currentTarget.value)}),ko.createElement(Ot,{placeholder:"Given",name:e.name+"-given",defaultValue:o?.given?.join(" "),onChange:u=>s(u.currentTarget.value)}),ko.createElement(Ot,{name:e.name+"-family",placeholder:"Family",defaultValue:o?.family,onChange:u=>l(u.currentTarget.value)}),ko.createElement(Ot,{placeholder:"Suffix",name:e.name+"-suffix",defaultValue:o?.suffix?.join(" "),onChange:u=>i(u.currentTarget.value)}))}import{Group as Wd,TextInput as xf}from"@mantine/core";import ta,{useState as Xd}from"react";function If(e){let[o,t]=Xd(e.defaultValue);function r(a){t(a),e.onChange&&e.onChange(a)}return ta.createElement(Wd,{spacing:"xs",grow:!0,noWrap:!0},ta.createElement(xf,{placeholder:"System",defaultValue:o?.system,onChange:a=>r({...o,system:a.currentTarget.value})}),ta.createElement(xf,{placeholder:"Value",defaultValue:o?.value,onChange:a=>r({...o,value:a.currentTarget.value})}))}import{NativeSelect as Jd,TextInput as $d}from"@mantine/core";import ra,{useCallback as aa,useState as Kd}from"react";var jd=["USD","EUR","CAD","GBP","AUD"];function gf(e){let{onChange:o}=e,[t,r]=Kd(e.defaultValue),a=aa(l=>{r(l),o&&o(l)},[o]),n=aa(l=>{a({...t,currency:l.currentTarget.value})},[t,a]),f=aa(l=>{a({...t,value:l.currentTarget.valueAsNumber})},[t,a]),s=ra.createElement(Jd,{defaultValue:t?.currency,data:jd,styles:{input:{fontWeight:500,borderTopLeftRadius:0,borderBottomLeftRadius:0,width:92}},onChange:n});return ra.createElement($d,{type:"number",label:e.label,placeholder:e.placeholder??"Value",defaultValue:t?.value?.toString()??"USD",icon:ra.createElement(Br,{size:14}),rightSection:s,rightSectionWidth:92,onChange:f})}import{Group as _d}from"@mantine/core";import na,{useState as Zd}from"react";function hf(e){let[o,t]=Zd(e.defaultValue);function r(a){t(a),e.onChange&&e.onChange(a)}return na.createElement(_d,{spacing:"xs",grow:!0,noWrap:!0},na.createElement(Me,{name:e.name+".start",placeholder:"Start",defaultValue:o?.start,onChange:a=>r({...o,start:a})}),na.createElement(Me,{name:e.name+".end",placeholder:"End",defaultValue:o?.end,onChange:a=>r({...o,end:a})}))}import{Group as Yd,NativeSelect as ec,TextInput as yf}from"@mantine/core";import Et,{useState as oc}from"react";function De(e){let[o,t]=oc(e.defaultValue);function r(a){t(a),e.onChange&&e.onChange(a)}return Et.createElement(Yd,{spacing:"xs",grow:!0,noWrap:!0},Et.createElement(ec,{style:{width:80},"data-testid":e.name+"-comparator",defaultValue:o?.comparator,data:["","<","<=",">=",">"],onChange:a=>r({...o,comparator:a.currentTarget.value})}),Et.createElement(yf,{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:tc(a.currentTarget.value)})}}),Et.createElement(yf,{placeholder:"Unit","data-testid":e.name+"-unit",defaultValue:o?.unit,onChange:a=>r({...o,unit:a.currentTarget.value})}))}function tc(e){if(e)return parseFloat(e)}import{Group as rc}from"@mantine/core";import fa,{useState as ac}from"react";function tt(e){let[o,t]=ac(e.defaultValue);function r(a){t(a),e.onChange&&e.onChange(a)}return fa.createElement(rc,{spacing:"xs",grow:!0,noWrap:!0},fa.createElement(De,{name:e.name+"-low",defaultValue:o?.low,onChange:a=>r({...o,low:a})}),fa.createElement(De,{name:e.name+"-high",defaultValue:o?.high,onChange:a=>r({...o,high:a})}))}import{Group as nc}from"@mantine/core";import la,{useState as fc}from"react";function Cf(e){let[o,t]=fc(e.defaultValue);function r(a){t(a),e.onChange&&e.onChange(a)}return la.createElement(nc,{spacing:"xs",grow:!0,noWrap:!0},la.createElement(De,{name:e.name+"-numerator",defaultValue:o?.numerator,onChange:a=>r({...o,numerator:a})}),la.createElement(De,{name:e.name+"-denominator",defaultValue:o?.denominator,onChange:a=>r({...o,denominator:a})}))}import{Group as Ic,NativeSelect as gc,TextInput as hc}from"@mantine/core";import{createReference as yc}from"@medplum/core";import Rt,{useRef as Pf,useState as Df}from"react";import{Group as lc,Text as vf}from"@mantine/core";import{getDisplayString as sc,getReferenceString as bf}from"@medplum/core";import lo,{forwardRef as ic,useCallback as Sf,useState as uc}from"react";var dc={Observation:"code",User:"email:contains"},cc=["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 mc(e){return{value:bf(e),label:sc(e),resource:e}}function Lt(e){let o=P(),t=e.resourceType,[r,a]=uc(),n=X(e.defaultValue,a),f=e.onChange,s=Sf(async(i,u)=>{let d=xc(t),c=new URLSearchParams({[d]:i,_count:"10"});return await o.searchResources(t,c,{signal:u})},[o,t]),l=Sf(i=>{f&&f(i[0])},[f]);return e.defaultValue&&!r&&!n?null:lo.createElement(So,{name:e.name,itemComponent:pc,defaultValue:n,placeholder:e.placeholder,maxSelectedValues:1,toKey:bf,toOption:mc,loadOptions:s,onChange:l,clearable:!0})}var pc=ic(({label:e,resource:o,...t},r)=>lo.createElement("div",{ref:r,...t},lo.createElement(lc,{noWrap:!0},lo.createElement(Ce,{value:o}),lo.createElement("div",null,lo.createElement(vf,null,e),lo.createElement(vf,{size:"xs",color:"dimmed"},o.birthDate)))));function xc(e){return dc[e]??(cc.includes(e)?"name":"_id")}function To(e){let o=Cc(e.targetTypes),t=vc(e.defaultValue,o),[r,a]=Df(e.defaultValue),[n,f]=Df(t),s=Pf();s.current=r;let l=Pf();l.current=n;function i(u){a(u),e.onChange&&e.onChange(u)}return Rt.createElement(Ic,{spacing:"xs",grow:!0,noWrap:!0},o?Rt.createElement(gc,{"data-autofocus":e.autoFocus,"data-testid":"reference-input-resource-type-select",defaultValue:n,autoFocus:e.autoFocus,onChange:u=>f(u.currentTarget.value),data:o}):Rt.createElement(hc,{"data-autofocus":e.autoFocus,"data-testid":"reference-input-resource-type-input",defaultValue:n,autoFocus:e.autoFocus,onChange:u=>f(u.currentTarget.value)}),Rt.createElement(Lt,{resourceType:n,name:e.name+"-id",placeholder:e.placeholder,defaultValue:r,onChange:u=>{i(u?yc(u):void 0)}}))}function Cc(e){if(!(!e||e.length===0||e.length===1&&e[0]==="Resource"))return e}function vc(e,o){let t=e?.reference?.split("/")[0];if(t)return t;if(o&&o.length>0)return o[0]}import{ActionIcon as kf}from"@mantine/core";import ge,{useRef as Sc,useState as bc}from"react";function Tf(e){let[o,t]=bc(e.defaultValue&&Array.isArray(e.defaultValue)?e.defaultValue:[]),r=Sc();r.current=o;function a(n){t(n),e.onChange&&e.onChange(n)}return ge.createElement("table",{style:{width:"100%",borderCollapse:"collapse"}},ge.createElement("colgroup",null,ge.createElement("col",{width:"97%"}),ge.createElement("col",{width:"3%"})),ge.createElement("tbody",null,o.map((n,f)=>ge.createElement("tr",{key:`${f}-${o.length}`},ge.createElement("td",null,ge.createElement(He,{arrayElement:!0,property:e.property,name:e.name+"."+f,defaultValue:n,onChange:s=>{let l=[...r.current];l[f]=s,a(l)}})),ge.createElement("td",{style:{textAlign:"right"}},ge.createElement(kf,{title:"Remove",size:"sm",onClick:s=>{N(s);let l=[...r.current];l.splice(f,1),a(l)}},ge.createElement(ze,null))))),ge.createElement("tr",null,ge.createElement("td",null),ge.createElement("td",{style:{textAlign:"right"}},ge.createElement(kf,{title:"Add",size:"sm",color:"green",onClick:n=>{N(n);let f=[...r.current];f.push(void 0),a(f)}},ge.createElement(po,null))))))}import{Button as Mf,Chip as Bf,Group as Nt,Modal as Pc,NativeSelect as Dc,Stack as kc,Switch as Tc,TextInput as Bc}from"@mantine/core";import{formatTiming as Ac}from"@medplum/core";import K,{useRef as Ff,useState as sa}from"react";var Mc=["sun","mon","tue","wed","thu","fri","sat"];function wf(e){let[o,t]=sa(e.defaultValue),[r,a]=sa(!1),n=Ff();return n.current=o,K.createElement(K.Fragment,null,K.createElement(Nt,{spacing:"xs",grow:!0,noWrap:!0},K.createElement("span",null,Ac(n.current)||"No repeat"),K.createElement(Mf,{onClick:()=>a(!0)},"Edit")),K.createElement(Fc,{visible:r,defaultValue:n.current,onOk:f=>{e.onChange&&e.onChange(f),t(f),a(!1)},onCancel:()=>a(!1)}))}var Af={repeat:{period:1,periodUnit:"d"}};function Fc(e){let[o,t]=sa(e.defaultValue||Af),r=Ff();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 s(i){n({...r.current?.repeat,periodUnit:i})}function l(i){n({...r.current?.repeat,dayOfWeek:i})}return K.createElement(Pc,{title:"Timing",closeButtonProps:{"aria-label":"Close"},opened:e.visible,onClose:()=>e.onCancel()},K.createElement(kc,null,K.createElement(Pe,{title:"Starts on",htmlFor:"timing-dialog-start"},K.createElement(Me,{name:"timing-dialog-start",onChange:i=>a(i)})),K.createElement(Tc,{label:"Repeat",checked:!!o.repeat,onChange:i=>n(i.currentTarget.checked?Af.repeat:void 0)}),o.repeat&&K.createElement(K.Fragment,null,K.createElement(Pe,{title:"Repeat every",htmlFor:"timing-dialog-period"},K.createElement(Nt,{spacing:"xs",grow:!0,noWrap:!0},K.createElement(Bc,{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)}),K.createElement(Dc,{id:"timing-dialog-periodUnit",name:"timing-dialog-periodUnit",defaultValue:o.repeat.periodUnit,onChange:i=>s(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"&&K.createElement(Pe,{title:"Repeat on"},K.createElement(Bf.Group,{multiple:!0,onChange:l},K.createElement(Nt,{position:"apart",mt:"md",spacing:"xs"},Mc.map(i=>K.createElement(Bf,{key:i,value:i,size:"xs",radius:"xl"},i.charAt(0).toUpperCase())))))),K.createElement(Nt,{position:"right"},K.createElement(Mf,{onClick:()=>e.onOk(o)},"OK"))))}function He(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===E.Attachment?G.createElement(Un,{name:r,defaultValue:a,onChange:e.onChange}):G.createElement(Tf,{property:o,name:r,defaultValue:a,onChange:e.onChange});let n=o.type;return n.length>1?G.createElement(Vc,{elementDefinitionTypes:n,...e}):G.createElement(Of,{elementDefinitionType:n[0],...e})}function Vc(e){let o=e.elementDefinitionTypes,t;e.defaultPropertyType&&(t=o.find(n=>n.code===e.defaultPropertyType)),t||(t=o[0]);let[r,a]=Hc(t);return G.createElement(Oc,{spacing:"xs",grow:!0,noWrap:!0},G.createElement(Ec,{style:{width:"200px"},defaultValue:r.code,onChange:n=>{a(o.find(f=>f.code===n.currentTarget.value))},data:o.map(n=>({value:n.code,label:n.code}))}),G.createElement(Of,{...e,elementDefinitionType:r,onChange:n=>{e.onChange&&e.onChange(n,e.name.replace("[x]",Rc(r.code)))}}))}function Of(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 E.SystemString:case E.canonical:case E.string:case E.time:case E.uri:case E.url:return G.createElement(ia,{id:r,name:r,"data-testid":r,defaultValue:a,required:n,onChange:f=>{e.onChange&&e.onChange(f.currentTarget.value)},error:Ie(e.outcome,r)});case E.date:return G.createElement(ia,{type:"date",id:r,name:r,"data-testid":r,defaultValue:a,required:n,onChange:f=>{e.onChange&&e.onChange(f.currentTarget.value)},error:Ie(e.outcome,r)});case E.dateTime:case E.instant:return G.createElement(Me,{name:r,defaultValue:a,onChange:e.onChange,outcome:e.outcome});case E.decimal:case E.integer:case E.positiveInt:case E.unsignedInt:return G.createElement(ia,{type:"number",step:t===E.decimal?"any":"1",id:r,name:r,"data-testid":r,defaultValue:a,required:n,onChange:f=>{e.onChange&&e.onChange(f.currentTarget.valueAsNumber)}});case E.code:return G.createElement(vt,{property:o,name:r,defaultValue:a,onChange:e.onChange});case E.boolean:return G.createElement(wc,{id:r,name:r,"data-testid":r,defaultChecked:!!a,onChange:f=>{e.onChange&&e.onChange(f.currentTarget.checked)}});case E.markdown:return G.createElement(Lc,{id:r,name:r,"data-testid":r,defaultValue:a,required:n,onChange:f=>{e.onChange&&e.onChange(f.currentTarget.value)}});case E.Address:return G.createElement(fn,{name:r,defaultValue:a,onChange:e.onChange});case E.Annotation:return G.createElement(un,{name:r,defaultValue:a,onChange:e.onChange});case E.Attachment:return G.createElement(St,{name:r,defaultValue:a,onChange:e.onChange});case E.CodeableConcept:return G.createElement(lf,{property:o,name:r,defaultValue:a,onChange:e.onChange});case E.Coding:return G.createElement(sf,{property:o,name:r,defaultValue:a,onChange:e.onChange});case E.ContactDetail:return G.createElement(df,{name:r,defaultValue:a,onChange:e.onChange});case E.ContactPoint:return G.createElement(wt,{name:r,defaultValue:a,onChange:e.onChange});case E.Extension:return G.createElement(mf,{name:r,defaultValue:a,onChange:e.onChange});case E.HumanName:return G.createElement(pf,{name:r,defaultValue:a,onChange:e.onChange});case E.Identifier:return G.createElement(If,{name:r,defaultValue:a,onChange:e.onChange});case E.Money:return G.createElement(gf,{name:r,defaultValue:a,onChange:e.onChange});case E.Period:return G.createElement(hf,{name:r,defaultValue:a,onChange:e.onChange});case E.Duration:case E.Quantity:return G.createElement(De,{name:r,defaultValue:a,onChange:e.onChange});case E.Range:return G.createElement(tt,{name:r,defaultValue:a,onChange:e.onChange});case E.Ratio:return G.createElement(Cf,{name:r,defaultValue:a,onChange:e.onChange});case E.Reference:return G.createElement(To,{name:r,defaultValue:a,targetTypes:qc(o),onChange:e.onChange});case E.Timing:return G.createElement(wf,{name:r,defaultValue:a,onChange:e.onChange});case E.Dosage:case E.UsageContext:return G.createElement(ot,{typeName:t,defaultValue:a,onChange:e.onChange,outcome:e.outcome});default:return G.createElement(ot,{typeName:Nc(o),defaultValue:a,onChange:e.onChange,outcome:e.outcome})}}function qc(e){return e?.type?.[0]?.targetProfile?.map(o=>o.split("/").pop())}function ot(e){let[o,t]=Qc(e.defaultValue??{});function r(s){t(s),e.onChange&&e.onChange(s)}let a=e.typeName,n=Gc.types[a];if(!n)return Bo.createElement("div",null,a,"\xA0not implemented");let f={type:a,value:o};return Bo.createElement(Uc,null,Object.entries(n.properties).map(s=>{let l=s[0];if(l==="id"||bt.includes(l))return null;let i=s[1];if(!i.type)return null;let[u,d]=be(f,l),c=i.min!==void 0&&i.min>0;return i.type.length===1&&i.type[0].code==="boolean"?Bo.createElement(At,{key:l,title:Ef(l),description:i.definition,htmlFor:l},Bo.createElement(He,{property:i,name:l,defaultValue:u,defaultPropertyType:d,outcome:e.outcome,onChange:(g,y)=>{r(et(o,l,y??l,s[1],g))}})):Bo.createElement(Pe,{key:l,title:Ef(l),description:i.definition,withAsterisk:c,htmlFor:l,outcome:e.outcome},Bo.createElement(He,{property:i,name:l,defaultValue:u,defaultPropertyType:d,onChange:(g,y)=>{r(et(o,l,y??l,s[1],g))}}))}))}import{Button as ua,createStyles as zc,Group as Lf}from"@mantine/core";import re,{useMemo as Wc,useState as Xc}from"react";var Jc=zc(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 $c(e){return e.toLocaleString("default",{month:"long"})+" "+e.getFullYear()}function Rf(e){let{classes:o}=Jc(),{onChangeMonth:t,onClick:r}=e,[a,n]=Xc(da);function f(l){n(i=>{let u=new Date(i.getTime());return u.setMonth(i.getMonth()+l),t(u),u})}let s=Wc(()=>Kc(a,e.slots),[a,e.slots]);return re.createElement("div",null,re.createElement(Lf,{position:"apart",spacing:"xs",grow:!0,noWrap:!0},re.createElement("p",{style:{flex:1}},$c(a)),re.createElement(Lf,{position:"right",spacing:"xs"},re.createElement(ua,{variant:"outline","aria-label":"Previous month",onClick:()=>f(-1)},"<"),re.createElement(ua,{variant:"outline","aria-label":"Next month",onClick:()=>f(1)},">"))),re.createElement("table",{className:o.table},re.createElement("thead",null,re.createElement("tr",null,re.createElement("th",null,"SUN"),re.createElement("th",null,"MON"),re.createElement("th",null,"TUE"),re.createElement("th",null,"WED"),re.createElement("th",null,"THU"),re.createElement("th",null,"FRI"),re.createElement("th",null,"SAT"))),re.createElement("tbody",null,s.map((l,i)=>re.createElement("tr",{key:"week-"+i},l.map((u,d)=>re.createElement("td",{key:"day-"+d},u&&re.createElement(ua,{disabled:!u.available,onClick:()=>r(u.date)},u.date.getDate()))))))))}function da(){let e=new Date;return e.setDate(1),e.setHours(0,0,0,0),e}function Kc(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:jc(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 jc(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 _c,createStyles as Zc}from"@mantine/core";import Yc from"react";var em=Zc(()=>({root:{"@media (max-width: 800px)":{paddingLeft:4,paddingRight:4}}}));function Ke(e){let{children:o,...t}=e,{classes:r}=em();return Yc.createElement(_c,{className:r.root,...t},o)}import ip from"react";import{ActionIcon as el,Center as Xm,createStyles as Jm,Group as $m,Loader as Km,Menu as Ve,ScrollArea as jm,TextInput as _m}from"@mantine/core";import{showNotification as Zm,updateNotification as ha}from"@mantine/notifications";import{getReferenceString as rt,normalizeErrorString as Ym}from"@medplum/core";import T,{useCallback as qt,useEffect as ep,useRef as ol,useState as tl}from"react";import{createStyles as pm,Group as Vt,List as Vf,Stack as qf,Text as ke,Title as Uf}from"@mantine/core";import{capitalize as xm,formatCodeableConcept as Im,formatDateTime as pa,formatObservationValue as gm,isReference as hm}from"@medplum/core";import h,{useEffect as ym,useState as Cm}from"react";import{Blockquote as om,createStyles as tm,Stack as rm}from"@mantine/core";import Nf from"react";var am=tm(e=>({noteBody:{fontSize:e.fontSizes.sm},noteCite:{fontSize:e.fontSizes.xs,marginBlockStart:3},noteRoot:{padding:5}}));function ca({value:e}){let{classes:o}=am();return e?Nf.createElement(rm,{justify:"flex-start",spacing:"xs"},e.map(t=>t.text&&Nf.createElement(om,{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 um}from"@mantine/core";import ma from"react";import{Text as nm}from"@mantine/core";import{getDisplayString as fm,isOk as lm,normalizeErrorString as sm}from"@medplum/core";import Hf,{useState as im}from"react";function Le(e){let{value:o,link:t,...r}=e,[a,n]=im(),f=X(o,n),s;if(a&&!lm(a))s=`[${sm(a)}]`;else if(f)s=fm(f);else return null;return t?Hf.createElement(se,{to:o,...r},s):Hf.createElement(nm,{component:"span",...r},s)}function je(e){return ma.createElement(um,{spacing:"xs"},ma.createElement(Ce,{size:24,radius:12,value:e.value,link:e.link}),ma.createElement(Le,{value:e.value,link:e.link}))}import{Badge as dm}from"@mantine/core";import cm from"react";var mm={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 Ht(e){return cm.createElement(dm,{color:mm[e.status]},e.status)}var Gf=pm(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}}));xa.defaultProps={hideObservationNotes:!1,hideSpecimenInfo:!1};function xa(e){let o=P(),t=X(e.value),[r,a]=Cm();if(ym(()=>{t?.specimen&&Promise.allSettled(t.specimen.map(f=>o.readReference(f))).then(f=>f.filter(s=>s.status==="fulfilled").map(s=>s.value)).then(a).catch(console.error)},[o,t]),!t)return null;let n=r?.flatMap(f=>f.note||[])||[];if(t.presentedForm&&t.presentedForm.length>0){let f=t.presentedForm[0];f.contentType?.startsWith("text/plain")&&f.data&&n.push({text:window.atob(f.data)})}return h.createElement(qf,null,h.createElement(Uf,null,"Diagnostic Report"),h.createElement(vm,{value:t}),!e.hideSpecimenInfo&&Sm(r),t.result&&h.createElement(bm,{hideObservationNotes:e.hideObservationNotes,value:t.result}),n.length>0&&h.createElement(ca,{value:n}))}function vm({value:e}){return h.createElement(Vt,{mt:"md",spacing:30},e.subject&&h.createElement("div",null,h.createElement(ke,{size:"xs",transform:"uppercase",color:"dimmed"},"Subject"),h.createElement(ke,null,h.createElement(je,{value:e.subject,link:!0}))),e.resultsInterpreter?.map(o=>h.createElement("div",{key:o.reference},h.createElement(ke,{size:"xs",transform:"uppercase",color:"dimmed"},"Interpreter"),h.createElement(ke,null,h.createElement(je,{value:o,link:!0})))),e.performer?.map(o=>h.createElement("div",{key:o.reference},h.createElement(ke,{size:"xs",transform:"uppercase",color:"dimmed"},"Performer"),h.createElement(ke,null,h.createElement(je,{value:o,link:!0})))),e.issued&&h.createElement("div",null,h.createElement(ke,{size:"xs",transform:"uppercase",color:"dimmed"},"Issued"),h.createElement(ke,null,pa(e.issued))),e.status&&h.createElement("div",null,h.createElement(ke,{size:"xs",transform:"uppercase",color:"dimmed"},"Status"),h.createElement(ke,null,xm(e.status))))}function Sm(e){return h.createElement(qf,{spacing:"xs"},h.createElement(Uf,{order:2,size:"h6"},"Specimens"),h.createElement(Vf,{type:"ordered"},e?.map(o=>h.createElement(Vf.Item,{ml:"sm",key:`specimen-${o.id}`},h.createElement(Vt,{spacing:20},h.createElement(Vt,{spacing:5},h.createElement(ke,{fw:500},"Collected:")," ",pa(o.collection?.collectedDateTime)),h.createElement(Vt,{spacing:5},h.createElement(ke,{fw:500},"Received:")," ",pa(o.receivedTime)))))))}function bm(e){let{classes:o}=Gf();return h.createElement("table",{className:o.table},h.createElement("thead",null,h.createElement("tr",null,h.createElement("th",null,"Test"),h.createElement("th",null,"Value"),h.createElement("th",null,"Reference Range"),h.createElement("th",null,"Interpretation"),h.createElement("th",null,"Category"),h.createElement("th",null,"Performer"),h.createElement("th",null,"Status"))),h.createElement("tbody",null,h.createElement(Qf,{value:e.value,hideObservationNotes:e.hideObservationNotes})))}function Qf(e){return h.createElement(h.Fragment,null,e.value?.map(o=>h.createElement(Pm,{key:`obs-${hm(o)?o.reference:o.id}`,hideObservationNotes:e.hideObservationNotes,value:o})))}function Pm(e){let{classes:o,cx:t}=Gf(),r=X(e.value);if(!r)return null;let a=!e.hideObservationNotes&&r.note,n=Tm(r);return h.createElement(h.Fragment,null,h.createElement("tr",{className:t({[o.criticalRow]:n})},h.createElement("td",{rowSpan:a?2:1},h.createElement(se,{to:r},h.createElement(Do,{value:r.code}))),h.createElement("td",null,h.createElement(Dm,{value:r})),h.createElement("td",null,h.createElement(km,{value:r.referenceRange})),h.createElement("td",null,r.interpretation&&r.interpretation.length>0&&h.createElement(Do,{value:r.interpretation[0]})),h.createElement("td",null,r.category&&r.category.length>0&&h.createElement(h.Fragment,null,r.category.map(f=>h.createElement("div",{key:`category-${Im(f)}`},h.createElement(Do,{value:f}))))),h.createElement("td",null,r.performer?.map(f=>h.createElement(fo,{key:f.reference,value:f}))),h.createElement("td",null,r.status&&h.createElement(Ht,{status:r.status}))),r.hasMember&&h.createElement(Qf,{value:r.hasMember,hideObservationNotes:e.hideObservationNotes}),a&&h.createElement("tr",null,h.createElement("td",{colSpan:6},h.createElement(ca,{value:r.note}))))}function Dm(e){let o=e.value;return h.createElement(h.Fragment,null,gm(o))}function km(e){let o=e.value&&e.value.length>0&&e.value[0];return o?o.text?h.createElement(h.Fragment,null,o.text):h.createElement(Dt,{value:o}):null}function Tm(e){let o=e.interpretation?.[0]?.coding?.[0]?.code;return o==="AA"||o==="LL"||o==="HH"||o==="A"}import{createStyles as Bm,Paper as Am,useComponentDefaultProps as Mm}from"@mantine/core";import Fm from"react";var wm=Bm((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%"}}})),Om={shadow:"xs",radius:"md",withBorder:!0};function Ao(e){let{className:o,children:t,width:r,fill:a,unstyled:n,...f}=Mm("Panel",Om,e),{classes:s,cx:l}=wm({width:r,fill:a},{name:"Panel",unstyled:n});return Fm.createElement(Am,{className:l(s.paper,o),...f},t)}import{createStyles as Em}from"@mantine/core";import{getPropertyDisplayName as Lm,stringify as zf,toTypedValue as Wf}from"@medplum/core";import ue,{useEffect as Rm,useState as Nm}from"react";var Hm=Em(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 Jf(e){let{classes:o}=Hm(),t=P(),[r,a]=Nm();if(Rm(()=>{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?ue.createElement("table",{className:o.root},ue.createElement("colgroup",null,ue.createElement("col",{style:{width:"30%"}}),ue.createElement("col",{style:{width:"35%"}}),ue.createElement("col",{style:{width:"35%"}})),ue.createElement("thead",null,ue.createElement("tr",null,ue.createElement("th",null,"Property"),ue.createElement("th",null,"Before"),ue.createElement("th",null,"After"))),ue.createElement("tbody",null,Object.entries(n.properties).map(f=>{let s=f[0];if(s==="id"||s==="meta")return null;let l=f[1],[i,u]=be(Wf(e.original),s),[d,c]=be(Wf(e.revised),s);return Xf(i)&&Xf(d)||zf(i)===zf(d)?null:ue.createElement("tr",{key:s},ue.createElement("td",null,Lm(s)),ue.createElement("td",{className:o.removed},ue.createElement(xe,{property:l,propertyType:u,value:i,ignoreMissingValues:!0})),ue.createElement("td",{className:o.added},ue.createElement(xe,{property:l,propertyType:c,value:d,ignoreMissingValues:!0})))}))):null}function Xf(e){return!e||Array.isArray(e)&&e.length===0||typeof e=="object"&&Object.keys(e).length===0}import Vm,{useEffect as qm,useState as Um}from"react";function Ia(e){let o=P(),t=X(e.value),[r,a]=Um();return qm(()=>{t&&o.requestSchema(t.resourceType).then(a).catch(console.log)},[o,t]),!r||!t?null:Vm.createElement(Zo,{value:{type:t.resourceType,value:e.forceUseInput?e.value:t},ignoreMissingValues:e.ignoreMissingValues})}import{ActionIcon as Gm,Group as Qm,Menu as $f,Text as ga}from"@mantine/core";import{formatDateTime as zm,getReferenceString as Wm}from"@medplum/core";import ae from"react";function Kf(e){return ae.createElement(Ke,null,e.children)}function _e(e){let{resource:o,profile:t,padding:r,popupMenuItems:a,...n}=e,f=t??o.meta?.author,s=e.dateTime??o.meta?.lastUpdated;return ae.createElement(Ao,{"data-testid":"timeline-item",fill:!0,...n},ae.createElement(Qm,{position:"apart",spacing:8,mx:"xs",my:"sm"},ae.createElement(Ce,{value:f,link:!0,size:"md"}),ae.createElement("div",{style:{flex:1}},ae.createElement(ga,{size:"sm"},ae.createElement(Le,{color:"dark",weight:500,value:f,link:!0})),ae.createElement(ga,{size:"xs"},ae.createElement(se,{color:"dimmed",to:e.resource},zm(s)),ae.createElement(ga,{component:"span",color:"dimmed",mx:8},"\xB7"),ae.createElement(se,{color:"dimmed",to:e.resource},e.resource.resourceType))),a&&ae.createElement($f,{position:"bottom-end",shadow:"md",width:200},ae.createElement($f.Target,null,ae.createElement(Gm,{radius:"xl","aria-label":`Actions for ${Wm(e.resource)}`},ae.createElement(Ar,null))),a)),ae.createElement(ho,null,r&&ae.createElement("div",{style:{padding:"0 16px 16px 16px"}},e.children),!r&&ae.createElement(ae.Fragment,null,e.children)))}function Zf(e,o){e.sort((t,r)=>{let a=jf(t,o),n=jf(r,o);return a>n?1:a<n?-1:_f(t,o)-_f(r,o)})}function jf(e,o){if(!Yf(e,o)){let t=e.priority;if(typeof t=="string")return{stat:4,asap:3,urgent:2}[t]??0}return 0}function _f(e,o){if(!Yf(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 Yf(e,o){return!!o&&e.resourceType===o.resourceType&&e.id===o.id}var op=Jm(e=>({pinnedComment:{backgroundColor:e.colors.blue[0]}}));function Ze(e){let o=P(),t=Qe(),r=o.getProfile(),a=ol(null),n=X(e.value),[f,s]=tl(),[l,i]=tl([]),u=e.loadTimelineResources,d=ol(l);d.current=l;let c=qt(C=>{Zf(C,n),C.reverse(),i(C)},[n]),g=qt(C=>{let R=[];for(let Be of C){if(Be.status!=="fulfilled")continue;let ye=Be.value;if(ye.type==="history"&&s(ye),ye.entry)for(let to of ye.entry)R.push(to.resource)}c(R)},[c]),y=qt(C=>c([...d.current,C]),[c]),A=qt(()=>{let C,R;"resourceType"in e.value?(C=e.value.resourceType,R=e.value.id):[C,R]=e.value.reference?.split("/"),u(o,C,R).then(g).catch(console.log)},[o,e.value,u,g]);ep(()=>A(),[A]);function v(C){!n||!e.createCommunication||o.createResource(e.createCommunication(n,r,C)).then(R=>y(R)).catch(console.log)}function B(C){!n||!e.createMedia||o.createResource(e.createMedia(n,r,C)).then(R=>y(R)).then(()=>ha({id:"upload-notification",color:"teal",title:"Upload complete",message:"",icon:T.createElement(zo,{size:16}),autoClose:2e3})).catch(R=>ha({id:"upload-notification",color:"red",title:"Upload error",message:Ym(R),icon:T.createElement(Fr,{size:16}),autoClose:2e3}))}function I(C,R){return o.updateResource({...C,priority:R})}function H(C){I(C,"stat").then(A).catch(console.log)}function b(C){I(C,"routine").then(A).catch(console.log)}function x(C){t(`/${C.resourceType}/${C.id}`)}function q(C){t(`/${C.resourceType}/${C.id}/edit`)}function oe(C){t(`/${C.resourceType}/${C.id}/delete`)}function me(C){t(`/${C.resourceType}/${C.id}/_history/${C.meta?.versionId}`)}function te(){Zm({id:"upload-notification",loading:!0,title:"Initializing upload...",message:"Please wait...",autoClose:!1,withCloseButton:!1})}function Vo(C){ha({id:"upload-notification",loading:!0,title:"Uploading...",message:sp(C),autoClose:!1,withCloseButton:!1})}return n?T.createElement(Kf,null,e.createCommunication&&T.createElement(Ao,null,T.createElement($,{testid:"timeline-form",onSubmit:C=>{v(C.text);let R=a.current;R&&(R.value="",R.focus())}},T.createElement($m,{spacing:"xs",noWrap:!0,style:{width:"100%"}},T.createElement(Ce,{value:r}),T.createElement(_m,{name:"text",ref:a,placeholder:"Add comment",style:{width:"100%",maxWidth:300}}),T.createElement(el,{type:"submit",radius:"xl",color:"blue",variant:"filled"},T.createElement(Rr,{size:16})),T.createElement(bo,{onUpload:B,onUploadStart:te,onUploadProgress:Vo},C=>T.createElement(el,{...C,radius:"xl",color:"blue",variant:"filled"},T.createElement(Wo,{size:16})))))),l.map(C=>{if(!C)return null;let R=`${C.resourceType}/${C.id}/${C.meta?.versionId}`;if(C.resourceType===n.resourceType&&C.id===n.id)return T.createElement(tp,{key:R,history:f,resource:C,onDetails:me});switch(C.resourceType){case"AuditEvent":return T.createElement(fp,{key:R,resource:C,onDetails:x});case"Communication":return T.createElement(ap,{key:R,resource:C,onPin:C.priority!=="stat"?H:void 0,onUnpin:C.priority==="stat"?b:void 0,onDetails:x,onEdit:q,onDelete:oe});case"DiagnosticReport":return T.createElement(lp,{key:R,resource:C,onDetails:x,onEdit:q,onDelete:oe});case"Media":return T.createElement(np,{key:R,resource:C,onDetails:x,onEdit:q,onDelete:oe});default:return T.createElement(_e,{key:R,resource:C,padding:!0},T.createElement(Ia,{value:C,ignoreMissingValues:!0}))}})):T.createElement(Xm,{style:{width:"100%",height:"100%"}},T.createElement(Km,null))}function Mo(e){return T.createElement(Ve.Dropdown,null,T.createElement(Ve.Label,null,"Resource"),e.onPin&&T.createElement(Ve.Item,{icon:T.createElement(Nr,{size:14}),onClick:()=>e.onPin(e.resource),"aria-label":`Pin ${rt(e.resource)}`},"Pin"),e.onUnpin&&T.createElement(Ve.Item,{icon:T.createElement(Hr,{size:14}),onClick:()=>e.onUnpin(e.resource),"aria-label":`Unpin ${rt(e.resource)}`},"Unpin"),e.onDetails&&T.createElement(Ve.Item,{icon:T.createElement(Er,{size:14}),onClick:()=>e.onDetails(e.resource),"aria-label":`Details ${rt(e.resource)}`},"Details"),e.onEdit&&T.createElement(Ve.Item,{icon:T.createElement(Mr,{size:14}),onClick:()=>e.onEdit(e.resource),"aria-label":`Edit ${rt(e.resource)}`},"Edit"),e.onDelete&&T.createElement(T.Fragment,null,T.createElement(Ve.Divider,null),T.createElement(Ve.Label,null,"Danger zone"),T.createElement(Ve.Item,{color:"red",icon:T.createElement($o,{size:14}),onClick:()=>e.onDelete(e.resource),"aria-label":`Delete ${rt(e.resource)}`},"Delete")))}function tp(e){let o=rp(e.history,e.resource);return o?T.createElement(_e,{resource:e.resource,padding:!0,popupMenuItems:T.createElement(Mo,{...e})},T.createElement(Jf,{original:o,revised:e.resource})):T.createElement(_e,{resource:e.resource,padding:!0,popupMenuItems:T.createElement(Mo,{...e})},T.createElement("h3",null,"Created"),T.createElement(Ia,{value:e.resource,ignoreMissingValues:!0,forceUseInput:!0}))}function rp(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 ap(e){let{classes:o}=op(),r=!e.resource.priority||e.resource.priority==="routine"?void 0:o.pinnedComment;return T.createElement(_e,{resource:e.resource,profile:e.resource.sender,dateTime:e.resource.sent,padding:!0,className:r,popupMenuItems:T.createElement(Mo,{...e})},T.createElement("p",null,e.resource.payload?.[0]?.contentString))}function np(e){let o=e.resource.content?.contentType,t=o&&!o.startsWith("image/")&&!o.startsWith("video/")&&o!=="application/pdf";return T.createElement(_e,{resource:e.resource,padding:!!t,popupMenuItems:T.createElement(Mo,{...e})},T.createElement(Ee,{value:e.resource.content}))}function fp(e){return T.createElement(_e,{resource:e.resource,padding:!0,popupMenuItems:T.createElement(Mo,{...e})},T.createElement(jm,null,T.createElement("pre",null,e.resource.outcomeDesc)))}function lp(e){return T.createElement(_e,{resource:e.resource,padding:!0,popupMenuItems:T.createElement(Mo,{...e})},T.createElement(xa,{value:e.resource}))}function sp(e){if(e.lengthComputable){let o=100*e.loaded/e.total;return`Uploaded: ${ya(e.loaded)} / ${ya(e.total)} ${o.toFixed(2)}%`}return`Uploaded: ${ya(e.loaded)}`}function ya(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 tA(e){return ip.createElement(Ze,{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 rl from"react";function Ut(e){let{children:o,...t}=e;return rl.createElement(Ke,null,rl.createElement(Ao,{...t},o))}import{createReference as Gt}from"@medplum/core";import up from"react";function pA(e){return up.createElement(Ze,{value:e.encounter,loadTimelineResources:async(o,t,r)=>Promise.allSettled([o.readHistory("Encounter",r),o.search("Communication","encounter=Encounter/"+r),o.search("Media","encounter=Encounter/"+r)]),createCommunication:(o,t,r)=>({resourceType:"Communication",status:"completed",encounter:Gt(o),subject:o.subject,sender:Gt(t),sent:new Date().toISOString(),payload:[{contentString:r}]}),createMedia:(o,t,r)=>({resourceType:"Media",status:"completed",encounter:Gt(o),subject:o.subject,operator:Gt(t),issued:new Date().toISOString(),content:r})})}import{Button as gx,Loader as hx,Table as yx}from"@mantine/core";import{normalizeOperationOutcome as Cx}from"@medplum/core";import ne,{useEffect as Ll,useRef as Rl,useState as jt}from"react";import{evalFhirPath as dp}from"@medplum/core";import cp from"react";function al(e){let o;try{o=dp(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 cp.createElement(xe,{value:o[0]||"",propertyType:e.propertyType})}import{ActionIcon as ox,Button as Eo,Center as $t,createStyles as tx,Group as Kt,Loader as rx,Menu as wl,Pagination as ax,Table as nx,Text as Ba,UnstyledButton as fx}from"@mantine/core";import{DEFAULT_SEARCH_COUNT as wa,formatSearchQuery as lx,globalSchema as sx}from"@medplum/core";import D,{useCallback as Ol,useEffect as El,useRef as ix,useState as Aa}from"react";import{Box as mp,Button as pp,Modal as xp,Text as Ip}from"@mantine/core";import Fo from"react";function fl(e){return Fo.createElement(xp,{title:"Export",closeButtonProps:{"aria-label":"Close"},opened:e.visible,onClose:e.onCancel},Fo.createElement(mp,{display:"flex",sx:{justifyContent:"space-between"}},e.exportCsv&&Fo.createElement(nl,{text:"CSV",exportLogic:e.exportCsv,onCancel:e.onCancel}),e.exportTransactionBundle&&Fo.createElement(nl,{text:"Transaction Bundle",exportLogic:e.exportTransactionBundle,onCancel:e.onCancel})),Fo.createElement(Ip,{sx:{marginTop:"10px",marginLeft:"2px"}},"Limited to 1000 records"))}function nl(e){return Fo.createElement(pp,{onClick:()=>{e.exportLogic(),e.onCancel()}},`Export as ${e.text}`)}import{Button as ft,Modal as kp}from"@mantine/core";import{globalSchema as Tp,stringify as Bp}from"@medplum/core";import J,{useEffect as Ap,useRef as vl,useState as Mp}from"react";import{capitalize as gp,DEFAULT_SEARCH_COUNT as hp,evalFhirPathTyped as yp,formatDateTime as Cp,Operator as F}from"@medplum/core";import Qt from"react";var vp={string:[F.EQUALS,F.NOT,F.CONTAINS,F.EXACT],fulltext:[F.EQUALS,F.NOT,F.CONTAINS,F.EXACT],token:[F.EQUALS,F.NOT],reference:[F.EQUALS,F.NOT],numeric:[F.EQUALS,F.NOT_EQUALS,F.GREATER_THAN,F.LESS_THAN,F.GREATER_THAN_OR_EQUALS,F.LESS_THAN_OR_EQUALS],quantity:[F.EQUALS,F.NOT_EQUALS,F.GREATER_THAN,F.LESS_THAN,F.GREATER_THAN_OR_EQUALS,F.LESS_THAN_OR_EQUALS],date:[F.EQUALS,F.NOT_EQUALS,F.GREATER_THAN,F.LESS_THAN,F.GREATER_THAN_OR_EQUALS,F.LESS_THAN_OR_EQUALS,F.STARTS_AFTER,F.ENDS_BEFORE,F.APPROXIMATELY],datetime:[F.EQUALS,F.NOT_EQUALS,F.GREATER_THAN,F.LESS_THAN,F.GREATER_THAN_OR_EQUALS,F.LESS_THAN_OR_EQUALS,F.STARTS_AFTER,F.ENDS_BEFORE,F.APPROXIMATELY]},Sp={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 at(e,o){return{...e,filters:o,offset:0,name:void 0}}function MA(e){return at(e,[])}function zt(e,o){return at(e,(e.filters??[]).filter(t=>t.code!==o))}function wo(e,o,t,r,a){a&&(e=zt(e,o));let n=[];return e.filters&&n.push(...e.filters),n.push({code:o,operator:t,value:r??""}),at(e,n)}function FA(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 sl(e,o){if(!e.filters)return e;let t=[...e.filters];return t.splice(o,1),{...e,filters:t,name:void 0}}function il(e,o){return Ca(e,o,-1)}function ul(e,o){return Ca(e,o,0)}function dl(e,o){return Ca(e,o,1)}function Ca(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),Sa(e,o,r,a)}function cl(e,o){return va(e,o,-1)}function ml(e,o){return va(e,o,0)}function pl(e,o){return va(e,o,1)}function va(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),Sa(e,o,r,a)}function xl(e,o){let t=new Date;return t.setMonth(0),t.setDate(1),t.setHours(0,0,0,0),Sa(e,o,t,new Date)}function Sa(e,o,t,r){return e=zt(e,o),e=ll(e,o,F.GREATER_THAN_OR_EQUALS,t),e=ll(e,o,F.LESS_THAN_OR_EQUALS,r),e}function ll(e,o,t,r){return wo(e,o,t,r.toISOString())}function ba(e,o,t=!0){return wo(e,o,F.MISSING,t.toString())}function bp(e,o){return e.offset===o?e:{...e,offset:o,name:void 0}}function Il(e,o){let t=e.count??hp,r=(o-1)*t;return bp(e,r)}function Pa(e,o,t){return o===gl(e)&&t!==void 0&&t===hl(e)?e:{...e,sortRules:[{code:o,descending:!!t}],name:void 0}}function wA(e,o){let t=!1;return gl(e)===o&&(t=!hl(e)),Pa(e,o,t)}function gl(e){let o=e.sortRules;if(!o||o.length===0)return;let t=o[0].code;return t.startsWith("-")?t.substr(1):t}function hl(e){let o=e.sortRules;return!o||o.length===0?!1:!!o[0].descending}function yl(e){return vp[e.type]}function nt(e){return Sp[e]??""}function ve(e){let o=e;return o.includes(".")&&(o=o.split(".").pop()),o==="id"||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(gp).join(" "))}function Cl(e,o){let t=o.name;return t==="id"?e.id:t==="meta.versionId"?e.meta?.versionId:t==="_lastUpdated"?Cp(e.meta?.lastUpdated):o.elementDefinition&&`${e.resourceType}.${o.name}`===o.elementDefinition.path?Pp(e,o.elementDefinition):o.searchParams&&o.searchParams.length===1&&o.name===o.searchParams[0].code?Dp(e,o.searchParams[0]):null}function Pp(e,o){let t=o.path?.split(".")?.pop()?.replaceAll("[x]","")??"",[r,a]=be({type:e.resourceType,value:e},t);return r?Qt.createElement(xe,{property:o,propertyType:a,value:r,maxWidth:200,ignoreMissingValues:!0,link:!1}):null}function Dp(e,o){let t=yp(o.expression,[{type:e.resourceType,value:e}]);return!t||t.length===0?null:Qt.createElement(Qt.Fragment,null,t.map((r,a)=>Qt.createElement(xe,{key:`${a}-${t.length}`,propertyType:r.type,value:r.value,maxWidth:200,ignoreMissingValues:!0,link:!1})))}function Sl(e){let[o,t]=Mp({search:JSON.parse(Bp(e.search))}),r=vl(null),a=vl(null);Ap(()=>{t({search:e.search})},[e.search]);function n(I){I.key==="Enter"&&i()}function f(){i()}function s(I){I.key==="Enter"&&u()}function l(){u()}function i(){let I=o.search.fields??[],H=r.current?.value;if(H){let b=[...I,H];t({search:{...o.search,fields:b}})}}function u(){let I=o.search.fields??[],H=a.current?.value;if(H){let b=[...I];b.splice(b.indexOf(H),1),t({search:{...o.search,fields:b}})}}function d(){let I=o.search.fields??[],H=a.current?.value;if(!H)return;let b=[...I],x=b.indexOf(H);x<=0||(g(b,x,x-1),t({search:{...o.search,fields:b}}))}function c(){let I=o.search.fields??[],H=a.current?.value;if(!H)return;let b=[...I],x=b.indexOf(H);x>=b.length-1||(g(b,x,x+1),t({search:{...o.search,fields:b}}))}function g(I,H,b){let x=I[H];I[H]=I[b],I[b]=x}if(!e.visible)return null;let y=e.search.resourceType,A=Tp.types[y],v=o.search.fields??[],B=Fp(A).filter(I=>!v.includes(I)).sort((I,H)=>I.localeCompare(H));return J.createElement(kp,{title:"Fields",closeButtonProps:{"aria-label":"Close"},opened:e.visible,onClose:e.onCancel},J.createElement("div",null,J.createElement("table",{style:{margin:"auto"}},J.createElement("thead",null,J.createElement("tr",null,J.createElement("th",{colSpan:2,align:"center"},"Available"),J.createElement("th",{colSpan:2,align:"center"},"Selected"))),J.createElement("tbody",null,J.createElement("tr",null,J.createElement("td",{colSpan:2,align:"center"},J.createElement("select",{ref:r,size:15,tabIndex:1,style:{width:"200px"},onKeyDown:I=>n(I),onDoubleClick:()=>f(),"data-testid":"available"},B.map(I=>J.createElement("option",{key:I,value:I},ve(I))))),J.createElement("td",{colSpan:2,align:"center"},J.createElement("select",{ref:a,size:15,tabIndex:4,style:{width:"200px"},onKeyDown:I=>s(I),onDoubleClick:()=>l(),"data-testid":"selected"},v.map(I=>J.createElement("option",{key:I,value:I},ve(I))))))),J.createElement("tfoot",null,J.createElement("tr",null,J.createElement("td",{align:"center"},J.createElement(ft,{compact:!0,variant:"outline",onClick:i},"Add")),J.createElement("td",{align:"center"},J.createElement(ft,{compact:!0,variant:"outline",onClick:u},"Remove")),J.createElement("td",{align:"center"},J.createElement(ft,{compact:!0,variant:"outline",onClick:d},"Up")),J.createElement("td",{align:"center"},J.createElement(ft,{compact:!0,variant:"outline",onClick:c},"Down")))))),J.createElement(ft,{onClick:()=>e.onOk(o.search)},"OK"))}function Fp(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(ve(a));if(e.searchParams)for(let a of Object.keys(e.searchParams)){let n=ve(a);!t.has(a)&&!r.has(n)&&(o.push(a),t.add(a),r.add(ve(a)))}return o}import{Button as st,Group as Vp,Modal as qp,NativeSelect as Pl}from"@mantine/core";import{globalSchema as Up,stringify as Dl}from"@medplum/core";import L,{useEffect as Gp,useRef as Tl,useState as ka}from"react";import{formatDateTime as wp,getSearchParameterDetails as Op,globalSchema as Ep,Operator as bl,SearchParameterType as Lp}from"@medplum/core";import lt from"react";function Wt(e){let{resourceType:o,filter:t}=e,r=Ep.types[o].searchParams?.[t.code];if(r){if(r.type==="reference"&&(t.operator===bl.EQUALS||t.operator===bl.NOT_EQUALS))return lt.createElement(Le,{value:{reference:t.value}});let a=Op(o,r);if(t.code==="_lastUpdated"||a.type===Lp.DATETIME)return lt.createElement(lt.Fragment,null,wp(t.value))}return lt.createElement(lt.Fragment,null,t.value)}import{Checkbox as Rp,TextInput as Da}from"@mantine/core";import{getSearchParameterDetails as Np,SearchParameterType as Oo}from"@medplum/core";import so from"react";function Xt(e){let o=Np(e.resourceType,e.searchParam),t="filter-value";switch(o.type){case Oo.REFERENCE:return so.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 Oo.BOOLEAN:return so.createElement(Rp,{name:t,"data-autofocus":e.autoFocus,"data-testid":t,defaultChecked:e.defaultValue==="true",autoFocus:e.autoFocus,onChange:r=>e.onChange(r.currentTarget.checked.toString())});case Oo.DATE:return so.createElement(Da,{type:"date",name:t,"data-autofocus":e.autoFocus,"data-testid":t,defaultValue:e.defaultValue,autoFocus:e.autoFocus,onChange:r=>e.onChange(r.currentTarget.value)});case Oo.DATETIME:return so.createElement(Me,{name:t,defaultValue:e.defaultValue,autoFocus:e.autoFocus,onChange:e.onChange});case Oo.NUMBER:return so.createElement(Da,{type:"number",name:t,"data-autofocus":e.autoFocus,"data-testid":t,defaultValue:e.defaultValue,autoFocus:e.autoFocus,onChange:r=>e.onChange(r.currentTarget.value)});case Oo.QUANTITY:return so.createElement(De,{name:t,defaultValue:Hp(e.defaultValue),autoFocus:e.autoFocus,onChange:r=>{r?e.onChange(`${r.value}`):e.onChange("")}});default:return so.createElement(Da,{name:t,"data-autofocus":e.autoFocus,"data-testid":t,defaultValue:e.defaultValue,autoFocus:e.autoFocus,onChange:r=>e.onChange(r.currentTarget.value),placeholder:"Search value"})}}function Hp(e){if(e){let[o,t,r]=e.split("|");if(o)return{value:parseFloat(o),system:t,unit:r}}}function Bl(e){let[o,t]=ka(JSON.parse(Dl(e.search))),[r,a]=ka(-1),n=Tl(o);n.current=o,Gp(()=>{t(JSON.parse(Dl(e.search)))},[e.search]);function f(u){t(wo(n.current,u.code,u.operator,u.value))}if(!e.visible)return null;let s=e.search.resourceType,l=Up.types[s].searchParams??{},i=o.filters||[];return L.createElement(qp,{title:"Filters",closeButtonProps:{"aria-label":"Close"},size:900,opened:e.visible,onClose:e.onCancel},L.createElement("div",null,L.createElement("table",null,L.createElement("colgroup",null,L.createElement("col",{style:{width:200}}),L.createElement("col",{style:{width:200}}),L.createElement("col",{style:{width:380}}),L.createElement("col",{style:{width:120}})),L.createElement("thead",null,L.createElement("tr",null,L.createElement("th",null,"Field"),L.createElement("th",null,"Operation"),L.createElement("th",null,"Value"),L.createElement("th",null,"Actions"))),L.createElement("tbody",null,i.map((u,d)=>d===r?L.createElement(kl,{key:`filter-${u.code}-${u.operator}-${u.value}-input`,resourceType:s,searchParams:l,defaultValue:u,okText:"Save",onOk:c=>{let g=[...i];g[d]=c,t(at(n.current,g)),a(-1)},onCancel:()=>a(-1)}):L.createElement(Qp,{key:`filter-${u.code}-${u.operator}-${u.value}-display`,resourceType:s,searchParams:l,filter:u,onEdit:()=>a(d),onDelete:()=>t(sl(n.current,d))})),L.createElement(kl,{resourceType:s,searchParams:l,okText:"Add",onOk:f})))),L.createElement(Vp,{position:"right",mt:"xl"},L.createElement(st,{onClick:()=>e.onOk(n.current)},"OK")))}function Qp(e){let{filter:o}=e;return L.createElement("tr",null,L.createElement("td",null,ve(o.code)),L.createElement("td",null,nt(o.operator)),L.createElement("td",null,L.createElement(Wt,{resourceType:e.resourceType,filter:o})),L.createElement("td",null,L.createElement(st,{compact:!0,variant:"outline",onClick:e.onEdit},"Edit"),L.createElement(st,{compact:!0,variant:"outline",onClick:e.onDelete},"Delete")))}function kl(e){let[o,t]=ka(e.defaultValue??{}),r=Tl(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 s=e.searchParams[o.code],l=s&&yl(s);return L.createElement("tr",null,L.createElement("td",null,L.createElement(Pl,{"data-testid":"filter-field",defaultValue:r.current.code,onChange:i=>a(i.currentTarget.value),data:["",...Object.keys(e.searchParams).map(i=>({value:i,label:ve(i)}))]})),L.createElement("td",null,l&&L.createElement(Pl,{"data-testid":"filter-operation",defaultValue:o.operator,onChange:i=>n(i.currentTarget.value),data:["",...l.map(i=>({value:i,label:nt(i)}))]})),L.createElement("td",null,s&&o.operator&&L.createElement(Xt,{resourceType:e.resourceType,searchParam:s,defaultValue:o.value,onChange:f})),L.createElement("td",null,o.code&&o.operator&&o.value&&L.createElement(st,{compact:!0,variant:"outline",onClick:()=>{e.onOk(r.current),t({})}},e.okText),e.onCancel&&L.createElement(st,{compact:!0,variant:"outline",onClick:e.onCancel},"Cancel")))}import{Button as zp,Grid as Ta,Modal as Wp}from"@mantine/core";import io,{useState as Xp}from"react";function Al(e){let[o,t]=Xp(e.defaultValue??"");if(!e.visible||!e.searchParam||!e.filter)return null;function r(){e.onOk({...e.filter,value:o})}return io.createElement(Wp,{title:e.title,size:"xl",opened:e.visible,onClose:e.onCancel},io.createElement($,{onSubmit:r},io.createElement(Ta,null,io.createElement(Ta.Col,{span:10},io.createElement(Xt,{resourceType:e.resourceType,searchParam:e.searchParam,defaultValue:o,autoFocus:!0,onChange:t})),io.createElement(Ta.Col,{span:2},io.createElement(zp,{onClick:r,fullWidth:!0},"OK")))))}import{Menu as M}from"@mantine/core";import{Operator as de}from"@medplum/core";import m from"react";function Ml(e){if(!e.searchParams)return null;function o(n,f){a(Pa(e.search,n.code,f))}function t(n){a(zt(e.search,n.code))}function r(n,f){e.onPrompt(n,{code:n.code,operator:f,value:""})}function a(n){e.onChange(n)}return e.searchParams.length===1?m.createElement(Jp,{search:e.search,searchParam:e.searchParams[0],onSort:o,onPrompt:r,onChange:a,onClear:t}):m.createElement(M.Dropdown,null,e.searchParams.map(n=>m.createElement(M.Item,{key:n.code},ve(n.code))))}function Jp(e){switch(e.searchParam.type){case"date":return m.createElement($p,{...e});case"number":case"quantity":return m.createElement(Kp,{...e});case"reference":return m.createElement(jp,{...e});case"string":case"token":case"uri":return m.createElement(_p,{...e});default:return m.createElement(m.Fragment,null,"Unknown search param type: ",e.searchParam.type)}}function $p(e){let{searchParam:o}=e,t=o.code;return m.createElement(M.Dropdown,null,m.createElement(M.Item,{icon:m.createElement(Xo,{size:14}),onClick:()=>e.onSort(o,!1)},"Sort Oldest to Newest"),m.createElement(M.Item,{icon:m.createElement(Jo,{size:14}),onClick:()=>e.onSort(o,!0)},"Sort Newest to Oldest"),m.createElement(M.Divider,null),m.createElement(M.Item,{icon:m.createElement(Io,{size:14}),onClick:()=>e.onPrompt(o,de.EQUALS)},"Equals..."),m.createElement(M.Item,{icon:m.createElement(xo,{size:14}),onClick:()=>e.onPrompt(o,de.NOT_EQUALS)},"Does not equal..."),m.createElement(M.Divider,null),m.createElement(M.Item,{icon:m.createElement(gt,{size:14}),onClick:()=>e.onPrompt(o,de.ENDS_BEFORE)},"Before..."),m.createElement(M.Item,{icon:m.createElement(It,{size:14}),onClick:()=>e.onPrompt(o,de.STARTS_AFTER)},"After..."),m.createElement(M.Item,{icon:m.createElement(vr,{size:14}),onClick:()=>e.onPrompt(o,de.EQUALS)},"Between..."),m.createElement(M.Divider,null),m.createElement(M.Item,{icon:m.createElement(Re,{size:14}),onClick:()=>e.onChange(dl(e.search,t))},"Tomorrow"),m.createElement(M.Item,{icon:m.createElement(Re,{size:14}),onClick:()=>e.onChange(ul(e.search,t))},"Today"),m.createElement(M.Item,{icon:m.createElement(Re,{size:14}),onClick:()=>e.onChange(il(e.search,t))},"Yesterday"),m.createElement(M.Divider,null),m.createElement(M.Item,{icon:m.createElement(Re,{size:14}),onClick:()=>e.onChange(pl(e.search,t))},"Next Month"),m.createElement(M.Item,{icon:m.createElement(Re,{size:14}),onClick:()=>e.onChange(ml(e.search,t))},"This Month"),m.createElement(M.Item,{icon:m.createElement(Re,{size:14}),onClick:()=>e.onChange(cl(e.search,t))},"Last Month"),m.createElement(M.Divider,null),m.createElement(M.Item,{icon:m.createElement(Re,{size:14}),onClick:()=>e.onChange(xl(e.search,t))},"Year to date"),m.createElement(Jt,{...e}))}function Kp(e){let{searchParam:o}=e;return m.createElement(M.Dropdown,null,m.createElement(M.Item,{icon:m.createElement(Xo,{size:14}),onClick:()=>e.onSort(o,!1)},"Sort Smallest to Largest"),m.createElement(M.Item,{icon:m.createElement(Jo,{size:14}),onClick:()=>e.onSort(o,!0)},"Sort Largest to Smallest"),m.createElement(M.Divider,null),m.createElement(M.Item,{icon:m.createElement(Io,{size:14}),onClick:()=>e.onPrompt(o,de.EQUALS)},"Equals..."),m.createElement(M.Item,{icon:m.createElement(xo,{size:14}),onClick:()=>e.onPrompt(o,de.NOT_EQUALS)},"Does not equal..."),m.createElement(M.Divider,null),m.createElement(M.Item,{icon:m.createElement(It,{size:14}),onClick:()=>e.onPrompt(o,de.GREATER_THAN)},"Greater than..."),m.createElement(M.Item,{icon:m.createElement(go,{size:14}),onClick:()=>e.onPrompt(o,de.GREATER_THAN_OR_EQUALS)},"Greater than or equal to..."),m.createElement(M.Item,{icon:m.createElement(gt,{size:14}),onClick:()=>e.onPrompt(o,de.LESS_THAN)},"Less than..."),m.createElement(M.Item,{icon:m.createElement(go,{size:14}),onClick:()=>e.onPrompt(o,de.LESS_THAN_OR_EQUALS)},"Less than or equal to..."),m.createElement(Jt,{...e}))}function jp(e){let{searchParam:o}=e;return m.createElement(M.Dropdown,null,m.createElement(M.Item,{icon:m.createElement(Io,{size:14}),onClick:()=>e.onPrompt(o,de.EQUALS)},"Equals..."),m.createElement(M.Item,{icon:m.createElement(xo,{size:14}),onClick:()=>e.onPrompt(o,de.NOT)},"Does not equal..."),m.createElement(Jt,{...e}))}function _p(e){let{searchParam:o}=e;return m.createElement(M.Dropdown,null,m.createElement(M.Item,{icon:m.createElement(Xo,{size:14}),onClick:()=>e.onSort(o,!1)},"Sort A to Z"),m.createElement(M.Item,{icon:m.createElement(Jo,{size:14}),onClick:()=>e.onSort(o,!0)},"Sort Z to A"),m.createElement(M.Divider,null),m.createElement(M.Item,{icon:m.createElement(Io,{size:14}),onClick:()=>e.onPrompt(o,de.EQUALS)},"Equals..."),m.createElement(M.Item,{icon:m.createElement(xo,{size:14}),onClick:()=>e.onPrompt(o,de.NOT)},"Does not equal..."),m.createElement(M.Divider,null),m.createElement(M.Item,{icon:m.createElement(br,{size:14}),onClick:()=>e.onPrompt(o,de.CONTAINS)},"Contains..."),m.createElement(M.Item,{icon:m.createElement(Sr,{size:14}),onClick:()=>e.onPrompt(o,de.EQUALS)},"Does not contain..."),m.createElement(Jt,{...e}))}function Jt(e){let{searchParam:o}=e,t=o.code;return m.createElement(m.Fragment,null,m.createElement(M.Divider,null),m.createElement(M.Item,{icon:m.createElement(yr,{size:14}),onClick:()=>e.onChange(ba(e.search,t))},"Missing"),m.createElement(M.Item,{icon:m.createElement(hr,{size:14}),onClick:()=>e.onChange(ba(e.search,t,!1))},"Not missing"),m.createElement(M.Divider,null),m.createElement(M.Item,{icon:m.createElement(Wr,{size:14}),onClick:()=>e.onClear(o)},"Clear filters"))}import{getSearchParameterDetails as Zp,globalSchema as Yp}from"@medplum/core";function Fl(e){let o=e.resourceType,t=[];for(let r of e.fields||["id","_lastUpdated"])t.push(ex(o,r));return t}function ex(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=Yp.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(s=>s.expression?.includes(f)),n.length===0&&(n=void 0)}return{name:o,elementDefinition:r,searchParams:n}}if(a){let n=Zp(e,a);return{name:o,elementDefinition:n.elementDefinitions?.[0],searchParams:[a]}}return{name:o}}var Ma=class extends Event{constructor(t){super("change");this.definition=t}},Fa=class extends Event{constructor(t){super("load");this.response=t}},uo=class extends Event{constructor(t,r){super("click");this.resource=t,this.browserEvent=r}},ux=tx(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 dx(e){let{classes:o}=ux(),t=P(),[r,a]=Aa(!1),[n,f]=Aa(),{search:s,onLoad:l}=e,[i,u]=Aa({selected:{},fieldEditorVisible:!1,filterEditorVisible:!1,exportDialogVisible:!1,filterDialogVisible:!1}),d=ix(i);d.current=i;let c=s.total??"accurate",g=Ol(k=>{f(void 0),t.search(s.resourceType,lx({...s,total:c,fields:void 0}),k).then(W=>{u({...d.current,searchResponse:W}),l&&l(new Fa(W))}).catch(W=>{u({...d.current,searchResponse:void 0}),f(W)})},[t,s,c,l]),y=Ol(()=>{u({...d.current,searchResponse:void 0}),g({cache:"reload"})},[g]);El(()=>{g()},[g]);function A(k,W){k.stopPropagation();let le=k.target.checked,pe={...d.current.selected};le?pe[W]=!0:delete pe[W],u({...d.current,selected:pe})}function v(k){k.stopPropagation();let Z=k.target.checked,le={},pe=d.current.searchResponse;Z&&pe?.entry&&pe.entry.forEach(qo=>{qo.resource?.id&&(le[qo.resource.id]=!0)}),u({...d.current,selected:le})}function B(){let k=d.current;if(!k.searchResponse?.entry||k.searchResponse.entry.length===0)return!1;for(let W of k.searchResponse.entry)if(W.resource?.id&&!k.selected[W.resource.id])return!1;return!0}function I(k){e.onChange&&e.onChange(new Ma(k))}function H(k,W){if(yt(k.target)||k.button===2)return;N(k);let Z=k.button===1||k.ctrlKey||k.metaKey;!Z&&e.onClick&&e.onClick(new uo(W,k)),Z&&e.onAuxClick&&e.onAuxClick(new uo(W,k))}function b(){return!!(e.onExport??e.onExportCsv??e.onExportTransactionBundle)}if(El(()=>{a(!1),t.requestSchema(e.search.resourceType).then(()=>a(!0)).catch(console.log)},[t,e.search.resourceType]),!(r&&sx.types[e.search.resourceType]))return D.createElement($t,{style:{width:"100%",height:"100%"}},D.createElement(rx,null));let q=e.checkboxesEnabled,oe=Fl(s),me=s.resourceType,te=i.searchResponse,C=te?.entry?.map(k=>k.resource),R="subtle",Be="gray",ye=16,to=window.innerWidth<768;return D.createElement("div",{className:o.root,"data-testid":"search-control"},!e.hideToolbar&&D.createElement(Kt,{position:"apart",mb:"xl"},D.createElement(Kt,{spacing:2},D.createElement(Eo,{compact:!0,variant:R,color:Be,leftIcon:D.createElement(kr,{size:ye}),onClick:()=>u({...d.current,fieldEditorVisible:!0})},"Fields"),D.createElement(Eo,{compact:!0,variant:R,color:Be,leftIcon:D.createElement(Or,{size:ye}),onClick:()=>u({...d.current,filterEditorVisible:!0})},"Filters"),e.onNew&&D.createElement(Eo,{compact:!0,variant:R,color:Be,leftIcon:D.createElement(wr,{size:ye}),onClick:e.onNew},"New..."),!to&&b()&&D.createElement(Eo,{compact:!0,variant:R,color:Be,leftIcon:D.createElement(zr,{size:ye}),onClick:e.onExport?e.onExport:()=>u({...d.current,exportDialogVisible:!0})},"Export..."),!to&&e.onDelete&&D.createElement(Eo,{compact:!0,variant:R,color:Be,leftIcon:D.createElement($o,{size:ye}),onClick:()=>e.onDelete(Object.keys(i.selected))},"Delete..."),!to&&e.onBulk&&D.createElement(Eo,{compact:!0,variant:R,color:Be,leftIcon:D.createElement(Cr,{size:ye}),onClick:()=>e.onBulk(Object.keys(i.selected))},"Bulk...")),D.createElement(Kt,{spacing:2},te&&D.createElement(Ba,{size:"xs",color:"dimmed"},xx(s,te.total),"-",Ix(s,te.total)," of"," ",`${c==="estimate"?"~":""}${te.total?.toLocaleString()}`),D.createElement(ox,{title:"Refresh",onClick:y},D.createElement(qr,{size:"1.125rem"})))),D.createElement(nx,{className:o.table},D.createElement("thead",null,D.createElement("tr",null,q&&D.createElement("th",null,D.createElement("input",{type:"checkbox",value:"checked","aria-label":"all-checkbox","data-testid":"all-checkbox",checked:B(),onChange:k=>v(k)})),oe.map(k=>D.createElement("th",{key:k.name},D.createElement(wl,{shadow:"md",width:240,position:"bottom-end"},D.createElement(wl.Target,null,D.createElement(fx,{className:o.control},D.createElement(Kt,{position:"apart",noWrap:!0},D.createElement(Ba,{weight:500,size:"sm"},ve(k.name)),D.createElement($t,{className:o.icon},D.createElement(xr,{size:14,stroke:1.5}))))),D.createElement(Ml,{search:e.search,searchParams:k.searchParams,onPrompt:(W,Z)=>{u({...d.current,filterDialogVisible:!0,filterDialogSearchParam:W,filterDialogFilter:Z})},onChange:W=>{I(W)}}))))),!e.hideFilters&&D.createElement("tr",null,q&&D.createElement("th",null),oe.map(k=>D.createElement("th",{key:k.name},k.searchParams&&D.createElement(cx,{resourceType:me,searchParams:k.searchParams,filters:e.search.filters}))))),D.createElement("tbody",null,C?.map(k=>k&&D.createElement("tr",{key:k.id,className:o.tr,"data-testid":"search-control-row",onClick:W=>H(W,k),onAuxClick:W=>H(W,k)},q&&D.createElement("td",null,D.createElement("input",{type:"checkbox",value:"checked","data-testid":"row-checkbox","aria-label":`Checkbox for ${k.id}`,checked:!!i.selected[k.id],onChange:W=>A(W,k.id)})),oe.map(W=>D.createElement("td",{key:W.name},Cl(k,W))))))),C?.length===0&&D.createElement(Ke,null,D.createElement($t,{style:{height:150}},D.createElement(Ba,{size:"xl",color:"dimmed"},"No results"))),te?.total!==void 0&&te.total>0&&D.createElement($t,{m:"md",p:"md"},D.createElement(ax,{value:mx(s),total:px(s,te.total),onChange:k=>I(Il(s,k)),getControlProps:k=>{switch(k){case"previous":return{"aria-label":"Previous page"};case"next":return{"aria-label":"Next page"};default:return{}}}})),n&&D.createElement("div",{"data-testid":"search-error"},D.createElement("pre",{style:{textAlign:"left"}},JSON.stringify(n,void 0,2))),D.createElement(Sl,{search:e.search,visible:d.current.fieldEditorVisible,onOk:k=>{I(k),u({...d.current,fieldEditorVisible:!1})},onCancel:()=>{u({...d.current,fieldEditorVisible:!1})}}),D.createElement(Bl,{search:e.search,visible:d.current.filterEditorVisible,onOk:k=>{I(k),u({...d.current,filterEditorVisible:!1})},onCancel:()=>{u({...d.current,filterEditorVisible:!1})}}),D.createElement(fl,{visible:d.current.exportDialogVisible,exportCsv:e.onExportCsv,exportTransactionBundle:e.onExportTransactionBundle,onCancel:()=>{u({...d.current,exportDialogVisible:!1})}}),D.createElement(Al,{key:i.filterDialogSearchParam?.code,visible:d.current.filterDialogVisible,title:i.filterDialogSearchParam?.code?ve(i.filterDialogSearchParam.code):"",resourceType:me,searchParam:i.filterDialogSearchParam,filter:i.filterDialogFilter,defaultValue:"",onOk:k=>{I(wo(e.search,k.code,k.operator,k.value)),u({...d.current,filterDialogVisible:!1})},onCancel:()=>{u({...d.current,filterDialogVisible:!1})}}))}var GM=D.memo(dx);function cx(e){let o=(e.filters??[]).filter(t=>e.searchParams.find(r=>r.code===t.code));return o.length===0?D.createElement("span",null,"no filters"):D.createElement(D.Fragment,null,o.map(t=>D.createElement("div",{key:`filter-${t.code}-${t.operator}-${t.value}`},nt(t.operator),"\xA0",D.createElement(Wt,{resourceType:e.resourceType,filter:t}))))}function mx(e){return Math.floor((e.offset??0)/(e.count??wa))+1}function px(e,o){let t=e.count??wa;return Math.ceil(o/t)}function xx(e,o){return Math.min(o,(e.offset??0)+1)}function Ix(e,o){return Math.min(o,((e.offset??0)+1)*(e.count??wa))}function vx(e){let o=P(),[t,r]=jt(),[a,n]=jt(),{query:f,fields:s}=e,[l,i]=jt(),[u,d]=jt({}),c=Rl();c.current=l;let g=Rl({});g.current=u,Ll(()=>{n(void 0),o.graphql(f).then(i).catch(b=>n(Cx(b)))},[o,f]);function y(b,x){b.stopPropagation();let oe=b.target.checked,me={...g.current};oe?me[x]=!0:delete me[x],d(me)}function A(b){b.stopPropagation();let q=b.target.checked,oe={},me=c.current?.data.ResourceList;q&&me&&me.forEach(te=>{te.id&&(oe[te.id]=!0)}),d(oe)}function v(){let b=c.current?.data.ResourceList;if(!b||b.length===0)return!1;for(let x of b)if(x.id&&!g.current[x.id])return!1;return!0}function B(b,x){yt(b.target)||(N(b),b.button!==1&&e.onClick&&e.onClick(new uo(x,b)),b.button===1&&e.onAuxClick&&e.onAuxClick(new uo(x,b)))}if(Ll(()=>{o.requestSchema(e.resourceType).then(b=>{r({...b})}).catch(console.log)},[o,e.resourceType]),!t?.types[e.resourceType])return ne.createElement(hx,null);let H=e.checkboxesEnabled;return ne.createElement("div",{onContextMenu:b=>N(b),"data-testid":"search-control"},ne.createElement(yx,null,ne.createElement("thead",null,ne.createElement("tr",null,H&&ne.createElement("th",null,ne.createElement("input",{type:"checkbox",value:"checked","aria-label":"all-checkbox","data-testid":"all-checkbox",checked:v(),onChange:b=>A(b)})),s.map(b=>ne.createElement("th",{key:b.name},b.name)))),ne.createElement("tbody",null,l?.data.ResourceList.map(b=>b&&ne.createElement("tr",{key:b.id,"data-testid":"search-control-row",onClick:x=>B(x,b),onAuxClick:x=>B(x,b)},H&&ne.createElement("td",null,ne.createElement("input",{type:"checkbox",value:"checked","data-testid":"row-checkbox","aria-label":`Checkbox for ${b.id}`,checked:!!u[b.id],onChange:x=>y(x,b.id)})),s.map(x=>ne.createElement("td",{key:x.name},ne.createElement(al,{propertyType:x.propertyType,path:x.fhirPath,resource:b}))))))),l?.data.ResourceList.length===0&&ne.createElement("div",{"data-testid":"empty-search"},"No results"),a&&ne.createElement("div",{"data-testid":"search-error"},ne.createElement("pre",{style:{textAlign:"left"}},JSON.stringify(a,void 0,2))),e.onBulk&&ne.createElement(gx,{onClick:()=>e.onBulk(Object.keys(g.current))},"Bulk..."))}var YM=ne.memo(vx);import co from"react";function Ye(e){return co.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 491 491",style:{width:e.size,height:e.size}},co.createElement("title",null,"Medplum Logo"),co.createElement("path",{fill:e.fill??"#ad7136",d:"M282 67c6-16 16-29 29-40L289 0c-22 17-37 41-43 68l17 23 19-24z"}),co.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"}),co.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"}),co.createElement("path",{fill:e.fill??"#40bc26",d:"M207 220a176 176 0 01-177 43A176 176 0 01251 43l1 5c17 59 2 125-45 172z"}),co.createElement("path",{fill:e.fill??"#33961e",d:"M252 48A421 421 0 0057 270l-27-7A176 176 0 01251 43l1 5z"}))}import{Alert as Sx}from"@mantine/core";import Oa from"react";function Lo(e){let o=e.outcome?.issue||e.issues;return!o||o.length===0?null:Oa.createElement(Sx,{icon:Oa.createElement(ao,{size:16}),color:"red"},o.map(t=>Oa.createElement("div",{"data-testid":"text-field-error",key:t.details?.text},t.details?.text)))}import{createReference as _t}from"@medplum/core";import bx,{useCallback as Px}from"react";function cF(e){let o=Px((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 bx.createElement(Ze,{value:e.patient,loadTimelineResources:o,createCommunication:(t,r,a)=>({resourceType:"Communication",status:"completed",subject:_t(t),sender:_t(r),sent:new Date().toISOString(),payload:[{contentString:a}]}),createMedia:(t,r,a)=>({resourceType:"Media",status:"completed",subject:_t(t),operator:_t(r),issued:new Date().toISOString(),content:a})})}import{Anchor as Hl,Button as Dx,createStyles as kx,NativeSelect as Tx,Stack as Bx,TextInput as La}from"@mantine/core";import{getReferenceString as Ax}from"@medplum/core";import U,{useEffect as Nl,useRef as Vl,useState as it}from"react";var ql=kx(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 AF(e){let o=P(),t=X(e.value),[r,a]=it(void 0),[n,f]=it(),[s,l]=it(),[i,u]=it();function d(){l(void 0)}function c(){f(void 0)}let g=Vl();if(g.current=i,Nl(()=>{o.requestSchema("PlanDefinition").then(a).catch(console.log)},[o]),Nl(()=>(u(Lx(t??{resourceType:"PlanDefinition"})),document.addEventListener("mouseover",d),document.addEventListener("click",c),()=>{document.removeEventListener("mouseover",d),document.removeEventListener("click",c)}),[t]),!r||!i)return null;function y(A,v){u({...g.current,[A]:v})}return U.createElement("div",null,U.createElement($,{testid:"questionnaire-form",onSubmit:()=>e.onSubmit(i)},U.createElement(La,{label:"Plan Title",defaultValue:i.title,onChange:A=>y("title",A.currentTarget.value)}),U.createElement(Ul,{actions:i.action||[],selectedKey:n,setSelectedKey:f,hoverKey:s,setHoverKey:l,onChange:A=>y("action",A)}),U.createElement(Dx,{type:"submit"},"Save")))}function Ul(e){let{classes:o}=ql(),t=Vl();t.current=e.actions;function r(f){e.onChange(t.current.map(s=>s.id===f.id?f:s))}function a(f){e.onChange([...t.current,f]),e.setSelectedKey(f.id)}function n(f){e.onChange(t.current.filter(s=>s!==f))}return U.createElement("div",{className:o.section},e.actions.map(f=>U.createElement("div",{key:f.id},U.createElement(Mx,{action:f,selectedKey:e.selectedKey,setSelectedKey:e.setSelectedKey,hoverKey:e.hoverKey,setHoverKey:e.setHoverKey,onChange:r,onRemove:()=>n(f)}))),U.createElement("div",{className:o.bottomActions},U.createElement(Hl,{href:"#",onClick:f=>{N(f),a({id:Ql()})}},"Add action")))}function Mx(e){let{classes:o,cx:t}=ql(),{action:r}=e,a=Ex(r),n=e.selectedKey===e.action.id,f=e.hoverKey===e.action.id;function s(u){u.stopPropagation(),e.setSelectedKey(e.action.id)}function l(u){N(u),e.setHoverKey(e.action.id)}let i=t(o.section,{[o.editing]:n,[o.hovering]:f&&!n});return U.createElement("div",{"data-testid":r.id,className:i,onClick:s,onMouseOver:l},n?U.createElement(wx,{action:r,actionType:a,onChange:e.onChange,selectedKey:e.selectedKey,setSelectedKey:e.setSelectedKey,hoverKey:e.hoverKey,setHoverKey:e.setHoverKey,onRemove:e.onRemove}):U.createElement(Fx,{action:r,actionType:a}),U.createElement("div",{className:o.bottomActions},U.createElement(Hl,{href:"#",onClick:u=>{u.preventDefault(),e.onRemove()}},"Remove")))}var Ra={path:"PlanDefinition.action.timing[x]",min:0,max:"1",type:[{code:"dateTime"},{code:"Period"},{code:"Range"},{code:"Timing"}]};function Fx(e){let{action:o,actionType:t}=e,[r,a]=Gl(o);return U.createElement("div",null,U.createElement("div",null,o.title||"Untitled"," ",t&&`(${t})`),o.definitionCanonical&&U.createElement("div",null,U.createElement(fo,{value:{reference:o.definitionCanonical}})),r&&U.createElement("div",null,U.createElement(xe,{property:Ra,propertyType:a,value:r})))}function wx(e){let{action:o}=e,[t,r]=it(e.actionType);function a(n,f){e.onChange({...o,[n]:f})}return U.createElement(Bx,{spacing:"xl"},U.createElement(La,{name:`actionTitle-${o.id}`,label:"Title",defaultValue:o.title,onChange:n=>a("title",n.currentTarget.value)}),U.createElement(La,{name:`actionDescription-${o.id}`,label:"Description",defaultValue:o.description,onChange:n=>a("description",n.currentTarget.value)}),U.createElement(Tx,{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&&U.createElement(Ul,{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 U.createElement(Zt,{title:"Appointment",description:"The subject must schedule an appointment from the schedule.",resourceType:"Schedule",action:o,onChange:e.onChange});case"lab":return U.createElement(Zt,{title:"Lab",description:"The subject must complete the following lab panel.",resourceType:"ActivityDefinition",action:o,onChange:e.onChange});case"questionnaire":return U.createElement(Zt,{title:"Questionnaire",description:"The subject must complete the selected questionnaire.",resourceType:"Questionnaire",action:o,onChange:e.onChange});case"task":return U.createElement(Zt,{title:"Task",description:"The subject must complete the following task.",resourceType:"ActivityDefinition",action:o,onChange:e.onChange});default:return null}})(),U.createElement(Pe,{title:"Timing",description:"When the action should take place."},U.createElement(Ox,{name:"timing-"+o.id,action:o,onChange:e.onChange})))}function Zt(e){let{id:o,definitionCanonical:t}=e.action,r=t?.startsWith(e.resourceType+"/")?{reference:t}:void 0;return U.createElement(Lt,{name:o,resourceType:e.resourceType,defaultValue:r,loadOnFocus:!0,onChange:a=>{a?e.onChange({...e.action,definitionCanonical:Ax(a)}):e.onChange({...e.action,definitionCanonical:void 0})}})}function Ox(e){let o=e.action,t="timing",[r,a]=Gl(o);return U.createElement(He,{property:Ra,name:"timing[x]",defaultValue:r,defaultPropertyType:a,onChange:(n,f)=>{e.onChange(et(o,t,f??t,Ra,n))}})}function Ex(e){if(e.definitionCanonical?.startsWith("Schedule"))return"appointment";if(e.definitionCanonical?.startsWith("Questionnaire/"))return"questionnaire";if(e.definitionCanonical?.startsWith("ActivityDefinition/"))return"task"}function Gl(e){return be({type:"PlanDefinitionAction",value:e},"timing")}var Ea=1;function Ql(e){if(e){if(e.startsWith("id-")){let o=parseInt(e.substring(3),10);isNaN(o)||(Ea=Math.max(Ea,o+1))}return e}return"id-"+Ea++}function Lx(e){return{...e,action:zl(e.action)}}function zl(e){if(e)return e.map(o=>({...o,id:Ql(o.id),action:zl(o.action)}))}import{Anchor as Te,Box as Qa,Button as oI,createStyles as tI,NativeSelect as rI,Space as aI,Textarea as nI,TextInput as tr,Title as fI}from"@mantine/core";import{globalSchema as lI,isResource as sI}from"@medplum/core";import S,{useEffect as Yl,useRef as iI,useState as or}from"react";import{Checkbox as qx,MultiSelect as Ux,NativeSelect as Gx,Radio as Kl,TextInput as ut,Textarea as Qx}from"@mantine/core";import{capitalize as Va,deepEquals as zx,formatCoding as qa,getTypedPropertyValue as qe,globalSchema as Wx,stringify as jl}from"@medplum/core";import Y from"react";import{evalFhirPathTyped as Rx,formatCoding as Nx,getTypedPropertyValue as Na}from"@medplum/core";var Yt=(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))(Yt||{});function Wl(e){return e.type==="choice"||e.type==="open-choice"}function Xl(e,o){if(!e.enableWhen)return!0;let t=e.enableBehavior??"any";for(let r of e.enableWhen){let a=$l(o,r.question);if(r.operator==="exists"&&!r.answerBoolean&&!a?.length){if(t==="any")return!0;continue}let{anyMatch:n,allMatch:f}=Vx(r,a,t);if(t==="any"&&n)return!0;if(t==="all"&&!f)return!1}return t!=="any"}function Jl(e,o,t){return e.map(r=>{let a=t.answerOption?.find(f=>Nx(f.valueCoding)===r||f[o]===r),n=Na({type:"QuestionnaireItemAnswerOption",value:a},"value");return{[o]:n?.value}})}function $l(e,o){if(!Array.isArray(e))return;let t=e.find(r=>r.linkId===o);if(t)return t.answer;for(let r of e)if(r.item){let a=$l(r.item,o);if(a)return a}}function Hx(e,o,t){if(t==="exists")return!!e===o.value;if(e){let r=t==="="||t==="!="?t?.replace("=","~"):t,[{value:a}]=Rx(`%actualAnswer ${r} %expectedAnswer`,[e],{actualAnswer:e,expectedAnswer:o});return a}else return!1}function Vx(e,o,t){let r=o||[],a=Na({type:"QuestionnaireItemEnableWhen",value:e},"answer[x]"),n=!1,f=!0;for(let s of r){let l=Na({type:"QuestionnaireResponseItemAnswer",value:s},"value[x]"),{operator:i}=e;if(Hx(l,a,i)?n=!0:f=!1,t==="any"&&n)break}return{anyMatch:n,allMatch:f}}function er(e){let o=e.item,t=e.index;function r(l,i){let u=i??0,d=e.currentResponseItems?.filter(g=>g.linkId===o.linkId)??[],c;Array.isArray(l)?c=l:c=Kx(d[0]?.answer??[],u,l),e.onChange({id:d[0].id,linkId:o.linkId,text:o.text,answer:c})}let a=o.type;if(!a)return null;let n=o.linkId;if(!n)return null;let f=o.initial&&o.initial.length>0?o.initial[0]:void 0,s=Ga(e.allResponses,o,e.index,e.groupSequence)??qe({type:"QuestionnaireItemInitial",value:f},"value");switch(a){case"boolean":return Y.createElement(At,{key:e.item.linkId,title:e.item.text,htmlFor:e.item.linkId},Y.createElement(qx,{id:e.item.linkId,name:e.item.linkId,defaultChecked:s?.value,onChange:l=>r({valueBoolean:l.currentTarget.checked},t)}));case"decimal":return Y.createElement(ut,{type:"number",step:"any",id:n,name:n,defaultValue:s?.value,onChange:l=>r({valueDecimal:l.currentTarget.valueAsNumber},t)});case"integer":return Y.createElement(ut,{type:"number",step:1,id:n,name:n,defaultValue:s?.value,onChange:l=>r({valueInteger:l.currentTarget.valueAsNumber},t)});case"date":return Y.createElement(ut,{type:"date",id:n,name:n,defaultValue:s?.value,onChange:l=>r({valueDate:l.currentTarget.value},t)});case"dateTime":return Y.createElement(Me,{name:n,defaultValue:s?.value,onChange:l=>r({valueDateTime:l},t)});case"time":return Y.createElement(ut,{type:"time",id:n,name:n,defaultValue:s?.value,onChange:l=>r({valueTime:l.currentTarget.value},t)});case"string":case"url":return Y.createElement(ut,{id:n,name:n,defaultValue:s?.value,onChange:l=>r({valueString:l.currentTarget.value},t)});case"text":return Y.createElement(Qx,{id:n,name:n,defaultValue:s?.value,onChange:l=>r({valueString:l.currentTarget.value},t)});case"attachment":return Y.createElement(St,{name:n,defaultValue:s?.value,onChange:l=>r({valueAttachment:l},t)});case"reference":return Y.createElement(To,{name:n,targetTypes:jx(o),defaultValue:s?.value,onChange:l=>r({valueReference:l},t)});case"quantity":return Y.createElement(De,{name:n,defaultValue:s?.value,onChange:l=>r({valueQuantity:l},t),disableWheel:!0});case"choice":case"open-choice":return _x(o)?Y.createElement(Xx,{name:n,item:o,initial:f,allResponses:e.allResponses,index:t,groupSequence:e.groupSequence,onChangeAnswer:l=>r(l,t)}):Y.createElement(Jx,{name:n,item:o,initial:f,allResponses:e.allResponses,onChangeAnswer:l=>r(l,t)});default:return null}}function Xx(e){let{name:o,item:t,initial:r}=e,a=qe({type:"QuestionnaireItemInitial",value:r},"value"),n=[""];if(t.answerOption)for(let s of t.answerOption){let l=qe({type:"QuestionnaireItemAnswerOption",value:s},"value");n.push(Ha(l))}let f=Ga(e.allResponses,t,e.index,e.groupSequence)??qe({type:"QuestionnaireItemInitial",value:r},"value");if(t.repeats){let{propertyName:s,data:l}=Zx(e.item),i=Yx(e.allResponses,t,e.groupSequence);return Y.createElement(Ux,{data:l,placeholder:"Select items",searchable:!0,defaultValue:i||[Ha(a)],onChange:u=>{let d=Jl(u,s,t);e.onChangeAnswer(d)}})}return Y.createElement(Gx,{id:o,name:o,onChange:s=>{let l=s.currentTarget.selectedIndex;if(l===0){e.onChangeAnswer({});return}let i=t.answerOption[l-1],u=qe({type:"QuestionnaireItemAnswerOption",value:i},"value"),d="value"+Va(u.type);e.onChangeAnswer({[d]:u.value})},defaultValue:(qa(f?.value)||f?.value)??Ha(a),data:n})}function Jx(e){let{name:o,item:t,initial:r,onChangeAnswer:a,allResponses:n}=e;return t.answerValueSet?Y.createElement(Je,{elementDefinition:{binding:{valueSet:t.answerValueSet}},onChange:a}):Y.createElement($x,{name:o,item:t,initial:r,allResponses:n,onChangeAnswer:a})}function $x(e){let{name:o,item:t,initial:r,onChangeAnswer:a}=e,n=Wx.types.QuestionnaireItemAnswerOption.properties["value[x]"],f=qe({type:"QuestionnaireItemInitial",value:r},"value"),s=[],l;if(t.answerOption)for(let d=0;d<t.answerOption.length;d++){let c=t.answerOption[d],g=`${o}-option-${d}`,y=qe({type:"QuestionnaireItemAnswerOption",value:c},"value");f&&jl(y)===jl(f)&&(l=g),s.push([g,y])}let i=Ga(e.allResponses,t,e.index,e.groupSequence),u=eI(s,i);return Y.createElement(Kl.Group,{name:o,value:u??l,onChange:d=>{let c=s.find(g=>g[0]===d);if(c){let g=c[1],y="value"+Va(g.type);a({[y]:g.value})}}},s.map(([d,c])=>Y.createElement(Kl,{key:d,id:d,value:d,label:Y.createElement(xe,{property:n,propertyType:c.type,value:c.value})})))}function Kx(e,o,t){if(o<e.length)return e[o]=t,e;for(let r=e.length;r<o;r++)e.push({});return e.push(t),e}function jx(e){if(e.type!=="reference")return[];let o=e.extension?.filter(r=>r.url==="http://hl7.org/fhir/StructureDefinition/questionnaire-referenceResource");return!o||o.length===0?[]:o.map(r=>r.valueCodeableConcept?.coding?.[0]?.code)}function _x(e){return!!e.extension?.some(o=>o.url==="http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl"&&o.valueCodeableConcept?.coding?.[0]?.code==="drop-down")}function Zx(e){if(e.answerOption?.length===0)return{propertyName:"",data:[]};let o=e.answerOption[0],t=qe({type:"QuestionnaireItemAnswerOption",value:o},"value"),r="value"+Va(t.type),a=(e.answerOption??[]).map(n=>({value:_l(n,r),label:_l(n,r)}));return{propertyName:r,data:a}}function _l(e,o){return qa(e.valueCoding)||e[o]?.toString()}function Ha(e){if(e)return e.type==="CodeableConcept"?e.value.coding[0].display:e.type==="Coding"?e.value.display:e.value.toString()}function Ua(e,o){let t=[];for(let r of e)r.linkId===o&&t.push(r),r.item&&(t=t.concat(Ua(r.item,o)));return t}function Zl(e){return qe({type:"QuestionnaireItemAnswer",value:e},"value")}function Ga(e,o,t=0,r=0){let n=Ua(e,o.linkId??"")[r]?.answer;return Zl(n?.[t]??{})}function Yx(e,o,t=0){let a=Ua(e,o.linkId??"")[t]?.answer;return a?a.map(f=>Zl(f)).map(f=>qa(f?.value)||f?.value):[]}function eI(e,o){return e.find(t=>zx(t[1].value,o?.value))?.[0]}var uI=tI(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:32,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}},movementActions:{position:"absolute",right:8,top:0,paddingTop:8,fontSize:e.fontSizes.xs,"& a":{marginLeft:8}},movementIcons:{color:e.colors.gray[5]},columnAlignment:{display:"flex",flexDirection:"column"},linkIdInput:{width:100,marginBottom:4},typeSelect:{width:100}}));function sw(e){let o=P(),t=X(e.questionnaire),[r,a]=or(),[n,f]=or(),[s,l]=or(),[i,u]=or();function d(){u(void 0)}function c(){l(void 0)}return Yl(()=>{o.requestSchema("Questionnaire").then(a).catch(console.log)},[o]),Yl(()=>(f(pI(t??{resourceType:"Questionnaire"})),document.addEventListener("mouseover",d),document.addEventListener("click",c),()=>{document.removeEventListener("mouseover",d),document.removeEventListener("click",c)}),[t]),!r||!n?null:S.createElement("div",null,S.createElement($,{testid:"questionnaire-form",onSubmit:()=>e.onSubmit(n)},S.createElement(es,{item:n,selectedKey:s,setSelectedKey:l,hoverKey:i,setHoverKey:u,onChange:f}),S.createElement(oI,{type:"submit"},"Save")))}function es(e){let{classes:o,cx:t}=uI(),r=e.item,a=e.item,n=sI(e.item),f=n||a.type==="group",s=a.linkId??"[untitled]",l=e.selectedKey===e.item.id,i=e.hoverKey===e.item.id,u=iI();u.current=e.item;function d(x){N(x),e.setSelectedKey(e.item.id)}function c(x){N(x),e.setHoverKey(e.item.id)}function g(x){let q=u.current;e.onChange({...q,item:q.item?.map(oe=>oe.id===x.id?x:oe)})}function y(x){e.onChange({...e.item,item:[...e.item.item??[],x]})}function A(x){e.onChange({...e.item,item:e.item.item?.filter(q=>q!==x)})}function v(x,q){e.onChange({...u.current,[x]:q})}function B(x){e.onChange({...e.item,...x})}function I(x){e.onChange({...e.item,item:e.item.item?.map(q=>q===x?{...q,repeats:!q.repeats}:q)})}function H(x,q){let oe=gI(e.item.item,x,q);e.onChange({...e.item,item:oe})}let b=t(o.section,{[o.editing]:l,[o.hovering]:i&&!l});return S.createElement("div",{"data-testid":a.linkId,className:b,onClick:d,onMouseOver:c},S.createElement("div",{className:o.questionBody},l?S.createElement(S.Fragment,null,n&&S.createElement(tr,{size:"xl",defaultValue:r.title,onChange:x=>v("title",x.currentTarget.value)}),!n&&S.createElement(nI,{autosize:!0,minRows:2,defaultValue:a.text,onChange:x=>v("text",x.currentTarget.value)}),a.type==="reference"&&S.createElement(mI,{item:a,onChange:x=>v("extension",x)}),Wl(a)&&S.createElement(dI,{item:a,onChange:x=>B(x)})):S.createElement(S.Fragment,null,r.title&&S.createElement(fI,null,r.title),a.text&&S.createElement("div",null,a.text),!f&&S.createElement(er,{item:a,index:0,allResponses:[],onChange:()=>{}}))),a.item?.map((x,q)=>S.createElement("div",{key:x.id},S.createElement(es,{item:x,selectedKey:e.selectedKey,setSelectedKey:e.setSelectedKey,hoverKey:e.hoverKey,isFirst:q===0,isLast:q===(e.item.item??[]).length-1,setHoverKey:e.setHoverKey,onChange:g,onRemove:()=>A(x),onRepeatable:I,onMoveUp:()=>H(q,-1),onMoveDown:()=>H(q,1)}))),!f&&S.createElement("div",{className:o.topActions},l?S.createElement(S.Fragment,null,S.createElement(tr,{size:"xs",className:o.linkIdInput,defaultValue:a.linkId,onChange:x=>v("linkId",x.currentTarget.value)}),!f&&S.createElement(rI,{size:"xs",className:o.typeSelect,defaultValue:a.type,onChange:x=>v("type",x.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"}]})):S.createElement("div",null,s)),!n&&S.createElement(Qa,{className:o.movementActions},S.createElement(Qa,{className:o.columnAlignment},!e.isFirst&&S.createElement(Te,{href:"#",onClick:x=>{x.preventDefault(),e.onMoveUp&&e.onMoveUp()}},S.createElement(gr,{"data-testid":"up-button",size:15,className:o.movementIcons})),!e.isLast&&S.createElement(Te,{href:"#",onClick:x=>{x.preventDefault(),e.onMoveDown&&e.onMoveDown()}},S.createElement(Ir,{"data-testid":"down-button",size:15,className:o.movementIcons})))),S.createElement("div",{className:o.bottomActions},f&&S.createElement(S.Fragment,null,S.createElement(Te,{href:"#",onClick:x=>{x.preventDefault(),y({id:eo(),linkId:Xa("q"),type:"string",text:"Question"})}},"Add item"),S.createElement(Te,{href:"#",onClick:x=>{x.preventDefault(),y({id:eo(),linkId:Xa("g"),type:"group",text:"Group"})}},"Add group")),n&&S.createElement(Te,{href:"#",onClick:x=>{x.preventDefault(),y(II())}},"Add Page"),l&&!n&&S.createElement(S.Fragment,null,S.createElement(Te,{href:"#",onClick:x=>{x.preventDefault(),e.onRepeatable&&e.onRepeatable(a)}},a.repeats?"Remove Repeatable":"Make Repeatable"),S.createElement(Te,{href:"#",onClick:x=>{x.preventDefault(),e.onRemove&&e.onRemove()}},"Remove"))))}function dI(e){let o=lI.types.QuestionnaireItemAnswerOption.properties["value[x]"],t=e.item.answerOption??[];return S.createElement("div",null,e.item.answerValueSet!==void 0?S.createElement(tr,{placeholder:"Enter Value Set",defaultValue:e.item.answerValueSet,onChange:r=>e.onChange({...e.item,answerValueSet:r.target.value})}):S.createElement(cI,{options:t,property:o,item:e.item,onChange:e.onChange}),S.createElement(Qa,{display:"flex"},S.createElement(Te,{href:"#",onClick:r=>{N(r),e.onChange({...e.item,answerValueSet:void 0,answerOption:[...t,{id:eo()}]})}},"Add choice"),S.createElement(aI,{w:"lg"}),S.createElement(Te,{href:"#",onClick:r=>{N(r),e.onChange({...e.item,answerOption:[],answerValueSet:""})}},"Add value set")))}function cI(e){return S.createElement("div",null,e.options.map(o=>{let[t,r]=be({type:"QuestionnaireItemAnswerOption",value:o},"value");return S.createElement("div",{key:o.id,style:{display:"flex",flexDirection:"row",justifyContent:"space-between",alignItems:"center",width:"80%"}},S.createElement("div",null,S.createElement(He,{key:o.id,name:"value[x]",property:e.property,defaultPropertyType:r,defaultValue:t,onChange:(a,n)=>{let f=[...e.options],s=f.findIndex(l=>l.id===o.id);f[s]={id:o.id,[n]:a},e.onChange({...e.item,answerOption:f})}})),S.createElement("div",null,S.createElement(Te,{href:"#",onClick:a=>{N(a),e.onChange({...e.item,answerOption:e.options.filter(n=>n.id!==o.id)})}},"Remove")))}))}function mI(e){let o=e.item.extension??[],t=o.filter(r=>r.url==="http://hl7.org/fhir/StructureDefinition/questionnaire-referenceResource")??[];return S.createElement(S.Fragment,null,t.map(r=>S.createElement("div",{key:r.id},S.createElement("div",{style:{display:"flex",flexDirection:"row",justifyContent:"space-between",alignItems:"center",width:"80%"}},S.createElement("div",null,S.createElement(tr,{key:r.id,name:"value[x]",value:r.valueCodeableConcept?.coding?.[0].code??"",onChange:a=>{a.preventDefault();let n=[...o],f=n.findIndex(l=>l.id===r.id),s=n[f].valueCodeableConcept?.coding?.[0]??[];s.display=a.target.value,s.code=a.target.value,e.onChange(n)}}))),S.createElement("div",null,S.createElement(Te,{href:"#",onClick:a=>{N(a),e.onChange(o.filter(n=>n.id!==r.id))}},"Remove")))),S.createElement(Te,{href:"#",onClick:r=>{N(r),e.onChange([...o,{id:eo(),url:"http://hl7.org/fhir/StructureDefinition/questionnaire-referenceResource",valueCodeableConcept:{coding:[{system:"http://hl7.org/fhir/fhir-types",display:"",code:""}]}}])}},"Add Resource"))}var za=1,Wa=1;function Xa(e){return e+za++}function eo(){return"id-"+Wa++}function pI(e){return{...e,id:e.id||eo(),item:os(e.item)}}function os(e){if(e)return e.forEach(o=>{o.id?.match(/^id-\d+$/)&&(Wa=Math.max(Wa,parseInt(o.id.substring(3),10)+1)),o.linkId?.match(/^q\d+$/)&&(za=Math.max(za,parseInt(o.linkId.substring(1),10)+1))}),e.map(o=>({...o,id:o.id||eo(),item:os(o.item),answerOption:xI(o.answerOption)}))}function xI(e){if(e)return e.map(o=>({...o,id:o.id||eo()}))}function II(){return{id:eo(),linkId:Xa("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"}]}}]}}function gI(e,o,t){let r=e??[],a=o+t;if(a<0||a>=r.length)return r;let n=[...r];return[n[o],n[a]]=[n[a],n[o]],n}import{Anchor as fs,Button as Ro,Group as hI,Stack as yI,Stepper as ts,Title as CI}from"@mantine/core";import{createReference as vI,getExtension as SI,getReferenceString as ls}from"@medplum/core";import w,{useEffect as rs,useState as No}from"react";function ss(e){let o=P(),t=o.getProfile(),[r,a]=No(),n=X(e.questionnaire),[f,s]=No(),[l,i]=No(0),u=BI(n?.item??[]),d=()=>i(y=>y>=u?y:y+1),c=()=>i(y=>y<=0?y:y-1);rs(()=>{o.requestSchema("Questionnaire").then(()=>o.requestSchema("QuestionnaireResponse")).then(a).catch(console.log)},[o]),rs(()=>{s(n?PI(n):void 0)},[n]);function g(y){let A=f?.item??[],B={resourceType:"QuestionnaireResponse",item:ds(A,y)};s(B)}return!r||!n?null:w.createElement($,{testid:"questionnaire-form",onSubmit:()=>{e.onSubmit&&f&&e.onSubmit({...f,questionnaire:ls(n),subject:e.subject,source:vI(t),authored:new Date().toISOString(),status:"completed"})}},n.title&&w.createElement(CI,null,n.title),n.item&&w.createElement(is,{items:n.item??[],allResponses:f?.item??[],onChange:g,renderPages:u>1,activePage:l}),w.createElement(hI,{position:"right",mt:"xl"},w.createElement(bI,{activePage:l,numberOfPages:u,nextStep:d,prevStep:c,submitButtonText:e.submitButtonText})))}function is(e){let[o,t]=No(Ja(e.items));function r(n,f){let s=o.some(i=>i.id===n),l;s?l=o.map(i=>i.id===n?f:i):l=[...o,f],t(l),e.onChange(l)}let a=e.items.map((n,f)=>e.renderPages?w.createElement(ts.Step,{label:n.text,key:n.linkId},w.createElement(as,{key:`${n.linkId}-${f}`,item:n,index:f,allResponses:e.allResponses,currentResponseItems:o,groupSequence:e.groupSequence,setResponseItem:r})):w.createElement(as,{key:`${n.linkId}-${f}`,item:n,index:f,groupSequence:e.groupSequence,allResponses:e.allResponses,currentResponseItems:o,setResponseItem:r}));return e.renderPages?w.createElement(ts,{active:e.activePage??0,allowNextStepsSelect:!1,p:6},a):w.createElement(yI,null,a)}function as(e){return Xl(e.item,e.allResponses)?e.item.type==="display"?w.createElement("p",{key:e.item.linkId},e.item.text):e.item.type==="group"?w.createElement(ns,{key:e.item.linkId,item:e.item,allResponses:e.allResponses,currentResponseItems:e.currentResponseItems,groupSequence:e.groupSequence,onChange:o=>e.setResponseItem(o.id,o)}):w.createElement(Pe,{key:e.item.linkId,htmlFor:e.item.linkId,title:e.item.text??""},w.createElement(ns,{item:e.item,allResponses:e.allResponses,currentResponseItems:e.currentResponseItems,groupSequence:e.groupSequence,onChange:o=>e.setResponseItem(o.id,o)})):null}function ns(e){let o=e.item;function t(r,a){let n=a??0,f=e.currentResponseItems.filter(s=>s.linkId===o.linkId);e.onChange({id:FI(f,n),linkId:o.linkId,text:o.text,item:r})}return o.type==="group"?w.createElement(AI,{key:e.item.linkId,text:o.text??"",item:o??[],allResponses:e.allResponses,onChange:t}):w.createElement(MI,{item:e.item,key:e.item.linkId},({index:r})=>w.createElement(er,{...e,index:r}))}function bI(e){return e.activePage===0&&e.numberOfPages<=0?w.createElement(Ro,{type:"submit"},e.submitButtonText??"OK"):e.activePage>=e.numberOfPages?w.createElement(w.Fragment,null,w.createElement(Ro,{onClick:e.prevStep},"Back"),w.createElement(Ro,{onClick:e.nextStep,type:"submit"},e.submitButtonText??"OK")):e.activePage===0?w.createElement(w.Fragment,null,w.createElement(Ro,{onClick:e.nextStep},"Next")):w.createElement(w.Fragment,null,w.createElement(Ro,{onClick:e.prevStep},"Back"),w.createElement(Ro,{onClick:e.nextStep},"Next"))}function PI(e){return{resourceType:"QuestionnaireResponse",questionnaire:ls(e),item:Ja(e.item)}}function Ja(e){return e?.map(DI)??[]}function DI(e){return{id:us(),linkId:e.linkId,text:e.text,item:Ja(e.item),answer:e.initial?.map(TI)??[]}}var kI=1;function us(){return"id-"+kI++}function TI(e){return{...e}}function BI(e){return e.filter(t=>SI(t,"http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl")?.valueCodeableConcept?.coding?.[0]?.code==="page").length>0?e.length:0}function AI(e){let[o,t]=No(wI(e.item,e.allResponses)),r=e.item;return w.createElement(w.Fragment,null,[...Array(o)].map((a,n)=>w.createElement("div",{key:n},w.createElement("h3",null,e.text),w.createElement(is,{items:r.item??[],allResponses:e.allResponses,groupSequence:n,onChange:f=>e.onChange(f,n)}))),e.item.repeats&&w.createElement(fs,{onClick:()=>t(a=>a+1)},"Add Group"))}function MI(e){let[o,t]=No(1),r=e.item?.repeats&&e.item.type!=="choice"&&e.item.type!=="open-choice";return w.createElement(w.Fragment,null,[...Array(o)].map((a,n)=>w.createElement(w.Fragment,{key:`${e.item.linkId}-${n}`},e.children({index:n}))),r&&w.createElement(fs,{onClick:()=>t(a=>a+1)},"Add Item"))}function FI(e,o){return e.length===0||e.length<o+1?us():e[o].id}function wI(e,o){let t=o.filter(r=>r.linkId===e.linkId).length;return t>0?t:1}function OI(e,o){let t=ds(e.item??[],o.item??[]);return{...o,item:t,answer:o.answer&&o.answer.length>0?o.answer:e.answer}}function EI(e,o){let t=[],r=Math.max(e.length,o.length);for(let a=0;a<r;a++)e[a]&&o[a]?t.push(OI(e[a],o[a])):o[a]&&t.push(o[a]);return t}function ds(e,o){let t=[];for(let r of new Set(o.map(a=>a.linkId))){let a=e.filter(f=>f.linkId===r),n=o.filter(f=>f.linkId===r);t=t.concat(EI(a,n))}return t}import{ActionIcon as rr,Button as LI,createStyles as RI,Divider as NI,Group as dt,NativeSelect as $a,Stack as ar,Text as HI,TextInput as VI}from"@mantine/core";import{formatRange as cs,getCodeBySystem as qI}from"@medplum/core";import z,{useEffect as UI,useState as Ka}from"react";var GI=RI(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"}})),QI=["gender","age","gestationalAge","context","appliesTo","category"],zI={definition:{resourceType:"ObservationDefinition"},onSubmit:()=>{}};function Mw(e){e=Object.assign(zI,e);let o=e.definition,[t,r]=Ka([]),[a,n]=Ka(1),[f,s]=Ka(1);return UI(()=>{let y=JI(o,s);r($I(y.qualifiedInterval||[],n))},[o]),z.createElement($,{testid:"reference-range-editor",onSubmit:l},z.createElement(ar,null,t.map(y=>z.createElement(WI,{unit:jI(o.quantitativeDetails?.unit),onChange:d,onAdd:c,onRemove:g,onRemoveGroup:u,key:`group-${y.id}`,intervalGroup:y}))),z.createElement(rr,{title:"Add Group",size:"sm",onClick:y=>{N(y),i({id:`group-id-${a}`,filters:{},intervals:[]}),n(A=>A+1)}},z.createElement(po,null)),z.createElement(dt,{position:"right"},z.createElement(LI,{type:"submit"},"Save")));function l(){let y=t.flatMap(A=>A.intervals).filter(A=>!_I(A));e.onSubmit({...o,qualifiedInterval:y})}function i(y){r(A=>[...A,y])}function u(y){r(A=>A.filter(v=>v.id!==y.id))}function d(y,A){r(v=>{v=[...v];let B=v.find(H=>H.id===y),I=B?.intervals.findIndex(H=>H.id===A.id);return I!==void 0&&B?.intervals[I]&&(B.intervals[I]=A),v})}function c(y,A){A.id===void 0&&(A.id=`id-${f}`,s(v=>v+1)),r(v=>{v=[...v];let B=v.findIndex(I=>I.id===y);if(B!==-1){let I={...v[B]};A={...A,...I.filters},I.intervals=[...I.intervals,A],v[B]=I}return v})}function g(y,A){r(v=>{v=[...v];let B=v.find(I=>I.id===y);return B&&(B.intervals=B.intervals.filter(I=>I.id!==A.id)),v})}}function WI(e){let{intervalGroup:o,unit:t}=e,{classes:r}=GI();return z.createElement(Ke,{"data-testid":o.id,className:r.section},z.createElement(ar,{spacing:"lg"},z.createElement(dt,{position:"right"},z.createElement(rr,{title:"Remove Group","data-testid":`remove-group-button-${o.id}`,key:`remove-group-button-${o.id}`,size:"sm",onClick:a=>{N(a),e.onRemoveGroup(o)}},z.createElement(ze,null))),z.createElement(XI,{intervalGroup:o,onChange:e.onChange}),z.createElement(NI,null),o.intervals.map(a=>z.createElement(ar,{key:`interval-${a.id}`,spacing:"xs"},z.createElement(dt,null,z.createElement(VI,{key:`condition-${a.id}`,"data-testid":`condition-${a.id}`,defaultValue:a.condition,label:"Condition: ",size:"sm",onChange:n=>{N(n),e.onChange(o.id,{...a,condition:n.currentTarget.value.trim()})}}),z.createElement(rr,{title:"Remove Interval",size:"sm",key:`remove-interval-${a.id}`,"data-testid":`remove-interval-${a.id}`,onClick:n=>{N(n),e.onRemove(o.id,a)}},z.createElement(ze,null))),z.createElement(tt,{onChange:n=>{e.onChange(o.id,{...a,range:n})},key:`range-${a.id}`,name:`range-${a.id}`,defaultValue:a.range}))),z.createElement(rr,{title:"Add Interval",size:"sm",onClick:a=>{N(a),e.onAdd(o.id,{range:{low:{unit:t},high:{unit:t}}})}},z.createElement(po,null))))}function XI(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(ar,{style:{maxWidth:"50%"}},z.createElement(dt,null,z.createElement($a,{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(dt,{spacing:"xs"},z.createElement(HI,{component:"label",htmlFor:`div-age-${o.id}`},"Age:"),z.createElement("div",{id:`div-age-${o.id}`},z.createElement(tt,{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($a,{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($a,{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 JI(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 $I(e,o){let t=1,r={};for(let a of e){let n=KI(a);n in r||(r[n]={id:`group-id-${t++}`,filters:Object.fromEntries(QI.map(f=>[f,a[f]])),intervals:[]}),r[n].intervals.push(a)}return o(t),Object.values(r)}function KI(e){return[`gender=${e.gender}`,`age=${cs(e.age)}`,`gestationalAge=${cs(e.gestationalAge)}`,`context=${e.context?.text}`,`appliesTo=${e.appliesTo?.map(t=>t.text).join("+")}`,`category=${e.category}`].join(":")}function jI(e){return e&&(qI(e,"http://unitsofmeasure.org")||e.text)}function _I(e){return e.range?.low?.value===void 0&&e.range?.high?.value===void 0}import{Button as ms,Grid as nr,Text as ZI}from"@mantine/core";import{formatDateTime as YI,getReferenceString as eg}from"@medplum/core";import he,{useEffect as og,useState as ps}from"react";function qw(e){let o=P(),t=X(e.value),[r,a]=ps(!1),[n,f]=ps();if(og(()=>{t&&!r&&(o.executeBatch(s(t)).then(f).catch(console.log),a(!0))},[o,t,r]),!t||!n)return null;return he.createElement(nr,null,t.action?.map((i,u)=>{let d=i.resource&&l(i.resource),c=d?.input?.[0]?.valueReference,g=d?.output?.[0]?.valueReference;return he.createElement(he.Fragment,{key:`action-${u}`},he.createElement(nr.Col,{span:1,p:"md"},d?.status==="completed"?he.createElement(Pr,null):he.createElement(Gr,{color:"gray"})),he.createElement(nr.Col,{span:9,p:"xs"},he.createElement(ZI,{weight:500},i.title),i.description&&he.createElement("div",null,i.description),he.createElement("div",null,"Last edited by\xA0",he.createElement(Le,{value:d?.meta?.author}),"\xA0on\xA0",YI(d?.meta?.lastUpdated)),he.createElement("div",null,"Status: ",he.createElement(Ht,{status:d?.status||"unknown"}))),he.createElement(nr.Col,{span:2,p:"md"},c&&!g&&he.createElement(ms,{onClick:()=>e.onStart(d,c)},"Start"),c&&g&&he.createElement(ms,{onClick:()=>e.onEdit(d,c,g)},"Edit")))}));function s(i){let u=[];if(i.action)for(let d of i.action)d.resource?.reference&&u.push({request:{method:"GET",url:d.resource.reference}});return{resourceType:"Bundle",type:"batch",entry:u}}function l(i){for(let u of n?.entry)if(u.resource&&i.reference===eg(u.resource))return u.resource}}import{createStyles as sg}from"@mantine/core";import Se,{useEffect as ig,useState as ug}from"react";import{stringify as ng}from"@medplum/core";function fr(e,o){let t=tg(e,o);return rg(t,e,o)}function tg(e,o){let t=e.length,r=o.length,a=t+r+1,n=1+2*a,f=n/2|0,s=new Array(n);s[f+1]={i:0,j:-1,prev:void 0,snake:!0};for(let l=0;l<a;l++){for(let i=-l;i<=l;i+=2){let u=f+i,d=u+1,c=u-1,g=s[d],y=s[c],A,v=0;i===-l||i!==l&&y.i<g.i?(v=g.i,A=g):(v=y.i+1,A=y),s[c]=void 0;let B=v-i,I={i:v,j:B,prev:ag(A),snake:!1};for(;v<t&&B<r&&e[v]===o[B];)v++,B++;if(v>I.i&&(I={i:v,j:B,prev:I,snake:!0}),s[u]=I,v>=t&&B>=r)return s[u]}s[f+l-1]=void 0}}function rg(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 s=a.i,l=a.j,i={position:s,lines:o.slice(s,n)},u={position:l,lines:t.slice(l,f)},d;i.lines.length===0&&u.lines.length>0?d="insert":i.lines.length>0&&u.lines.length===0?d="delete":d="change",r.push({original:i,revised:u,type:d}),a.snake&&(a=a.prev)}return r}function ag(e){return e&&!e.snake&&e.prev?e.prev:e}function xs(e){let o=e.entry.filter(r=>!!r.resource).map(r=>({meta:r.resource?.meta,lines:ng(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 fg(t,o),lg(t),t}function fg(e,o){for(let t=1;t<o.length;t++){let r=fr(o[t-1].lines,o[t].lines);for(let a of r){let n=a.original.position,f=a.original.lines,s=a.revised.lines;if((a.type==="delete"||a.type==="change")&&e.splice(n,f.length),a.type==="insert"||a.type==="change")for(let l=0;l<a.revised.lines.length;l++)e.splice(n+l,0,{id:o[t].meta.versionId,meta:o[t].meta,value:s[l],span:1})}}}function lg(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 dg=sg(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 Zw(e){let{classes:o}=dg(),t=P(),[r,a]=ug(e.history);if(ig(()=>{!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 Se.createElement("div",null,"Loading...");let n=r.entry?.[0]?.resource;if(!n)return null;let f=xs(r);return Se.createElement("div",{className:o.container},Se.createElement("table",{className:o.root},Se.createElement("tbody",null,f.map((s,l)=>Se.createElement("tr",{key:"row-"+l,className:s.span>0?o.startRow:o.normalRow},s.span>0&&Se.createElement(Se.Fragment,null,Se.createElement("td",{className:o.author,rowSpan:s.span},Se.createElement(je,{value:s.meta.author,link:!0})),Se.createElement("td",{className:o.dateTime,rowSpan:s.span},Se.createElement(se,{to:cg(n,s.meta.versionId)},mg(s.meta.lastUpdated)))),Se.createElement("td",{className:o.lineNumber},l+1),Se.createElement("td",{className:o.line},Se.createElement("pre",{className:o.pre},s.value)))))))}function cg(e,o){return`/${e.resourceType}/${e.id}/_history/${o}`}function mg(e){let o=Math.floor((Date.now()-Date.parse(e))/1e3),t=Math.floor(o/31536e3);if(t>0)return Ho(t,"year");let r=Math.floor(o/2592e3);if(r>0)return Ho(r,"month");let a=Math.floor(o/86400);if(a>0)return Ho(a,"day");let n=Math.floor(o/3600);if(n>0)return Ho(n,"hour");let f=Math.floor(o/60);return f>0?Ho(f,"minute"):Ho(o,"second")}function Ho(e,o){return`${e} ${e===1?o:o+"s"} ago`}import{createStyles as pg}from"@mantine/core";import{stringify as Is}from"@medplum/core";import oo from"react";var xg=pg(e=>({removed:{color:e.colors.red[7],textDecoration:"line-through"},added:{color:e.colors.green[7]}}));function nO(e){let o=e.original,t=e.revised;e.ignoreMeta&&(o={...o,meta:void 0},t={...t,meta:void 0});let r=Is(o,!0).match(/[^\r\n]+/g),a=Is(t,!0).match(/[^\r\n]+/g),n=fr(r,a);return oo.createElement("pre",{style:{color:"gray"}},n.map((f,s)=>oo.createElement(Ig,{key:"delta"+s,delta:f})))}function Ig(e){let{classes:o}=xg();return oo.createElement(oo.Fragment,null,"...",oo.createElement("br",null),e.delta.original.lines.length>0&&oo.createElement("div",{className:o.removed},e.delta.original.lines.join(`
66
+ `)),e.delta.revised.lines.length>0&&oo.createElement("div",{className:o.added},e.delta.revised.lines.join(`
67
+ `)),"...",oo.createElement("br",null))}import{Table as gg}from"@mantine/core";import{formatDateTime as hg,normalizeErrorString as yg}from"@medplum/core";import ce,{useEffect as Cg,useState as vg}from"react";function mO(e){let o=P(),[t,r]=vg(e.history);return Cg(()=>{!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?ce.createElement(gg,{withBorder:!0,withColumnBorders:!0},ce.createElement("thead",null,ce.createElement("tr",null,ce.createElement("th",null,"Author"),ce.createElement("th",null,"Date"),ce.createElement("th",null,"Version"))),ce.createElement("tbody",null,t.entry?.map((a,n)=>ce.createElement(Sg,{key:"entry-"+n,entry:a})))):ce.createElement("div",null,"Loading...")}function Sg(e){let{response:o,resource:t}=e.entry;return t?ce.createElement("tr",null,ce.createElement("td",null,ce.createElement(je,{value:t.meta?.author,link:!0})),ce.createElement("td",null,hg(t.meta?.lastUpdated)),ce.createElement("td",null,ce.createElement(se,{to:bg(t)},t.meta?.versionId))):ce.createElement("tr",null,ce.createElement("td",{colSpan:3},yg(o?.outcome)))}function bg(e){return`/${e.resourceType}/${e.id}/_history/${e.meta?.versionId}`}import{Button as Pg,createStyles as Dg,Stack as kg,Text as Tg}from"@mantine/core";import{getReferenceString as Bg}from"@medplum/core";import ee,{useEffect as Ag,useRef as Mg,useState as ct}from"react";var Fg=Dg(e=>({container:{display:"flex",minHeight:400},info:{minWidth:300,padding:20,borderRight:`1px solid ${e.colors.gray[3]}`},selection:{minWidth:300,padding:20}}));function PO(e){let{classes:o}=Fg(),t=P(),r=X(e.schedule),a=X(e.questionnaire),[n,f]=ct(),s=Mg();s.current=n;let[l,i]=ct(da()),[u,d]=ct(),[c,g]=ct(),[y,A]=ct();if(Ag(()=>{r?(f([]),t.searchResources("Slot",new URLSearchParams([["_count",(30*24).toString()],["schedule",Bg(r)],["start","gt"+wg(l)],["start","lt"+Og(l)]])).then(f).catch(console.log)):f(void 0)},[t,r,l]),!r||!n||!a)return null;let v=r.actor?.[0];return ee.createElement("div",{className:o.container,"data-testid":"scheduler"},ee.createElement("div",{className:o.info},v&&ee.createElement(Ce,{value:v,size:"xl"}),v&&ee.createElement(Tg,{size:"xl",weight:500},ee.createElement(Le,{value:v})),ee.createElement("p",null,"1 hour"),u&&ee.createElement("p",null,u.toLocaleDateString()),c&&ee.createElement("p",null,gs(new Date(c.start)))),ee.createElement("div",{className:o.selection},!u&&ee.createElement("div",null,ee.createElement("h3",null,"Select date"),ee.createElement(Rf,{slots:n,onChangeMonth:i,onClick:d})),u&&!c&&ee.createElement("div",null,ee.createElement("h3",null,"Select time"),ee.createElement(kg,null,n.map(B=>{let I=new Date(B.start);return I.getTime()>u.getTime()&&I.getTime()<u.getTime()+24*3600*1e3&&ee.createElement("div",{key:B.id},ee.createElement(Pg,{variant:"outline",style:{width:150},onClick:()=>g(B)},gs(I)))}))),u&&c&&!y&&ee.createElement(ss,{questionnaire:a,submitButtonText:"Next",onSubmit:A}),u&&c&&y&&ee.createElement("div",null,ee.createElement("h3",null,"You're all set!"),ee.createElement("p",null,"Check your email for a calendar invite."))))}function wg(e){return hs(e.getTime())}function Og(e){return hs(e.getTime()+31*24*60*60*1e3)}function hs(e){return new Date(Math.max(Date.now(),e)).toISOString()}function gs(e){return e.toLocaleTimeString([],{hour:"numeric",minute:"2-digit"})}import{createReference as lr}from"@medplum/core";import Eg from"react";function FO(e){return Eg.createElement(Ze,{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:[lr(o)],subject:o.subject,sender:lr(t),sent:new Date().toISOString(),payload:[{contentString:r}]}),createMedia:(o,t,r)=>({resourceType:"Media",status:"completed",basedOn:[lr(o)],subject:o.subject,operator:lr(t),issued:new Date().toISOString(),content:r})})}import{normalizeOperationOutcome as oh}from"@medplum/core";import mr,{useEffect as th,useState as ks}from"react";import{Anchor as ys,Button as Lg,Center as Rg,Group as Ng,Stack as Hg,Text as Vg,TextInput as qg,Title as Ug}from"@mantine/core";import{normalizeOperationOutcome as Gg}from"@medplum/core";import Fe,{useState as Qg}from"react";function sr(e){let o=P(),[t,r]=Qg();return Fe.createElement($,{style:{maxWidth:400},onSubmit:async a=>{try{e.handleAuthResponse(await o.startNewProject({login:e.login,projectName:a.projectName}))}catch(n){r(Gg(n))}}},Fe.createElement(Rg,{sx:{flexDirection:"column"}},Fe.createElement(Ye,{size:32}),Fe.createElement(Ug,null,"Create project")),Fe.createElement(Hg,{spacing:"xl"},Fe.createElement(qg,{name:"projectName",label:"Project Name",placeholder:"My Project",required:!0,autoFocus:!0,error:Ie(t,"firstName")}),Fe.createElement(Vg,{color:"dimmed",size:"xs"},"By clicking submit you agree to the Medplum"," ",Fe.createElement(ys,{href:"https://www.medplum.com/privacy"},"Privacy\xA0Policy")," and ",Fe.createElement(ys,{href:"https://www.medplum.com/terms"},"Terms\xA0of\xA0Service"),".")),Fe.createElement(Ng,{position:"right",mt:"xl",noWrap:!0},Fe.createElement(Lg,{type:"submit"},"Create project")))}import{Anchor as cr,Button as Jg,Center as $g,Checkbox as Kg,Divider as jg,Group as Ss,PasswordInput as _g,Stack as Zg,Text as bs,TextInput as _a}from"@mantine/core";import{normalizeOperationOutcome as Ps}from"@medplum/core";import _,{useEffect as Yg,useState as eh}from"react";import zg,{useEffect as Wg,useRef as Xg,useState as ja}from"react";function ir(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 ur(e){let o=P(),{googleClientId:t,handleGoogleCredential:r}=e,a=Xg(null),[n,f]=ja(typeof google<"u"),[s,l]=ja(!1),[i,u]=ja(!1);return Wg(()=>{if(typeof google>"u"){ir("https://accounts.google.com/gsi/client",()=>f(!0));return}s||(google.accounts.id.initialize({client_id:t,callback:r}),l(!0)),a.current&&!i&&(google.accounts.id.renderButton(a.current,{}),u(!0))},[o,t,s,n,a,i,r]),t?zg.createElement("div",{ref:a}):null}function dr(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 Cs(e){typeof grecaptcha>"u"&&ir("https://www.google.com/recaptcha/api.js?render="+e)}function vs(e){return new Promise((o,t)=>{grecaptcha.ready(async()=>{try{o(await grecaptcha.execute(e,{action:"submit"}))}catch(r){t(r)}})})}function Ds(e){let o=dr(e.googleClientId),t=e.recaptchaSiteKey,r=P(),[a,n]=eh(),f=Mt(a,void 0);return Yg(()=>{t&&Cs(t)},[t]),_.createElement($,{style:{maxWidth:400},onSubmit:async s=>{try{let l="";t&&(l=await vs(t)),e.handleAuthResponse(await r.startNewUser({projectId:e.projectId,clientId:e.clientId,firstName:s.firstName,lastName:s.lastName,email:s.email,password:s.password,remember:s.remember==="true",recaptchaSiteKey:t,recaptchaToken:l}))}catch(l){n(Ps(l))}}},_.createElement($g,{sx:{flexDirection:"column"}},e.children),_.createElement(Lo,{issues:f}),o&&_.createElement(_.Fragment,null,_.createElement(Ss,{position:"center",p:"xl",style:{height:70}},_.createElement(ur,{googleClientId:o,handleGoogleCredential:async s=>{try{e.handleAuthResponse(await r.startGoogleLogin({googleClientId:s.clientId,googleCredential:s.credential,createUser:!0}))}catch(l){n(Ps(l))}}})),_.createElement(jg,{label:"or",labelPosition:"center",my:"lg"})),_.createElement(Zg,{spacing:"xl"},_.createElement(_a,{name:"firstName",type:"text",label:"First name",placeholder:"First name",required:!0,autoFocus:!0,error:Ie(a,"firstName")}),_.createElement(_a,{name:"lastName",type:"text",label:"Last name",placeholder:"Last name",required:!0,error:Ie(a,"lastName")}),_.createElement(_a,{name:"email",type:"email",label:"Email",placeholder:"name@domain.com",required:!0,error:Ie(a,"email")}),_.createElement(_g,{name:"password",label:"Password",autoComplete:"off",required:!0,error:Ie(a,"password")}),_.createElement(bs,{color:"dimmed",size:"xs"},"By clicking submit you agree to the Medplum"," ",_.createElement(cr,{href:"https://www.medplum.com/privacy"},"Privacy\xA0Policy")," and ",_.createElement(cr,{href:"https://www.medplum.com/terms"},"Terms\xA0of\xA0Service"),"."),_.createElement(bs,{color:"dimmed",size:"xs"},"This site is protected by reCAPTCHA and the Google"," ",_.createElement(cr,{href:"https://policies.google.com/privacy"},"Privacy\xA0Policy")," and ",_.createElement(cr,{href:"https://policies.google.com/terms"},"Terms\xA0of\xA0Service")," apply.")),_.createElement(Ss,{position:"apart",mt:"xl",noWrap:!0},_.createElement(Kg,{name:"remember",label:"Remember me",size:"xs"}),_.createElement(Jg,{type:"submit"},"Create account")))}function p0(e){let{type:o,projectId:t,clientId:r,googleClientId:a,recaptchaSiteKey:n,onSuccess:f}=e,s=P(),[l,i]=ks(void 0),[u,d]=ks();th(()=>{o==="patient"&&l&&s.startNewPatient({login:l,projectId:t}).then(g=>s.processCode(g.code)).then(()=>f()).catch(g=>d(oh(g)))},[s,o,t,l,f]);function c(g){g.code?s.processCode(g.code).then(()=>f()).catch(console.log):g.login&&i(g.login)}return mr.createElement(Ut,{width:450},u&&mr.createElement("pre",null,JSON.stringify(u,null,2)),!l&&mr.createElement(Ds,{projectId:t,clientId:r,googleClientId:a,recaptchaSiteKey:n,handleAuthResponse:c},e.children),l&&o==="project"&&mr.createElement(sr,{login:l,handleAuthResponse:c}))}import{showNotification as Hs}from"@mantine/notifications";import{normalizeErrorString as Vs}from"@medplum/core";import mo,{useCallback as Ya,useEffect as wh,useState as en}from"react";import{Anchor as Ts,Button as Bs,Center as As,Checkbox as rh,Divider as ah,Group as Za,PasswordInput as nh,Stack as fh,TextInput as lh}from"@mantine/core";import{normalizeOperationOutcome as sh}from"@medplum/core";import j,{useCallback as pr,useState as Ms}from"react";function Fs(e){let[o,t]=Ms();return o?j.createElement(uh,{email:o,...e}):j.createElement(ih,{setEmail:t,...e})}function ih(e){let{setEmail:o,onRegister:t,handleAuthResponse:r,children:a,disableEmailAuth:n,...f}=e,s=P(),l=!e.disableGoogleAuth&&dr(e.googleClientId),i=pr(async c=>{if(!c.authorizeUrl)return!1;let g=JSON.stringify({...await s.ensureCodeChallenge(f),domain:c.domain}),y=new URL(c.authorizeUrl);return y.searchParams.set("state",g),window.location.assign(y.toString()),!0},[s,f]),u=pr(async c=>{let g=await s.post("auth/method",{email:c.email});await i(g)||o(c.email)},[s,i,o]),d=pr(async c=>{let g=await s.startGoogleLogin({...f,googleCredential:c.credential});await i(g)||r(g)},[s,f,i,r]);return j.createElement($,{style:{maxWidth:400},onSubmit:u},j.createElement(As,{sx:{flexDirection:"column"}},a),l&&j.createElement(j.Fragment,null,j.createElement(Za,{position:"center",p:"xl",style:{height:70}},j.createElement(ur,{googleClientId:l,handleGoogleCredential:d})),!n&&j.createElement(ah,{label:"or",labelPosition:"center",my:"lg"})),!n&&j.createElement(lh,{name:"email",type:"email",label:"Email",placeholder:"name@domain.com",required:!0,autoFocus:!0}),j.createElement(Za,{position:"apart",mt:"xl",spacing:0,noWrap:!0},j.createElement("div",null,t&&j.createElement(Ts,{component:"button",type:"button",color:"dimmed",onClick:t,size:"xs"},"Register")),!n&&j.createElement(Bs,{type:"submit"},"Next")))}function uh(e){let{onForgotPassword:o,handleAuthResponse:t,children:r,...a}=e,n=P(),[f,s]=Ms(),l=Mt(f,void 0),i=pr(u=>{n.startLogin({...a,password:u.password,remember:u.remember==="on"}).then(t).catch(d=>s(sh(d)))},[n,a,t]);return j.createElement($,{style:{maxWidth:400},onSubmit:i},j.createElement(As,{sx:{flexDirection:"column"}},r),j.createElement(Lo,{issues:l}),j.createElement(fh,{spacing:"xl"},j.createElement(nh,{name:"password",label:"Password",autoComplete:"off",required:!0,autoFocus:!0,error:Ie(f,"password")})),j.createElement(Za,{position:"apart",mt:"xl",spacing:0,noWrap:!0},o&&j.createElement(Ts,{component:"button",type:"button",color:"dimmed",onClick:o,size:"xs"},"Forgot password"),j.createElement(rh,{id:"remember",name:"remember",label:"Remember me",size:"xs",sx:{lineHeight:1}}),j.createElement(Bs,{type:"submit"},"Sign in")))}import{Avatar as dh,Center as ch,Group as mh,Stack as ph,Text as ws,Title as xh,UnstyledButton as Ih}from"@mantine/core";import{normalizeOperationOutcome as gh}from"@medplum/core";import we,{useState as hh}from"react";function Os(e){let o=P(),[t,r]=hh();return we.createElement(ph,null,we.createElement(ch,{sx:{flexDirection:"column"}},we.createElement(Ye,{size:32}),we.createElement(xh,{order:3},"Choose profile")),we.createElement(Lo,{outcome:t}),e.memberships.map(a=>we.createElement(Ih,{key:a.id,onClick:()=>{o.post("auth/profile",{login:e.login,profile:a.id}).then(e.handleAuthResponse).catch(n=>r(gh(n)))}},we.createElement(mh,null,we.createElement(dh,{radius:"xl"}),we.createElement("div",{style:{flex:1}},we.createElement(ws,{size:"sm",weight:500},a.profile?.display),we.createElement(ws,{color:"dimmed",size:"xs"},a.project?.display))))))}import{Button as yh,Center as Ch,Checkbox as vh,Group as Sh,Stack as Es,Title as bh}from"@mantine/core";import Ue from"react";function Ls(e){let o=P();return Ue.createElement($,{style:{maxWidth:400},onSubmit:t=>{o.post("auth/scope",{login:e.login,scope:Object.keys(t).join(" ")}).then(e.handleAuthResponse).catch(console.log)}},Ue.createElement(Es,null,Ue.createElement(Ch,{sx:{flexDirection:"column"}},Ue.createElement(Ye,{size:32}),Ue.createElement(bh,null,"Choose scope")),Ue.createElement(Es,null,(e.scope??"openid").split(" ").map(t=>Ue.createElement(vh,{key:t,id:t,name:t,label:t,defaultChecked:!0}))),Ue.createElement(Sh,{position:"right",mt:"xl"},Ue.createElement(yh,{type:"submit"},"Set scope"))))}import{Alert as Ph,Button as Dh,Center as kh,Group as Th,Stack as Rs,TextInput as Bh,Title as Ah}from"@mantine/core";import{normalizeErrorString as Mh}from"@medplum/core";import Oe,{useState as Fh}from"react";function Ns(e){let o=P(),[t,r]=Fh(void 0);return Oe.createElement($,{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(Mh(n)))}},Oe.createElement(Rs,null,Oe.createElement(kh,{sx:{flexDirection:"column"}},Oe.createElement(Ye,{size:32}),Oe.createElement(Ah,null,"Enter MFA code")),t&&Oe.createElement(Ph,{icon:Oe.createElement(ao,{size:16}),title:"Error",color:"red"},t),Oe.createElement(Rs,null,Oe.createElement(Bh,{name:"token",label:"MFA code",required:!0})),Oe.createElement(Th,{position:"right",mt:"xl"},Oe.createElement(Dh,{type:"submit"},"Submit code"))))}function u1(e){let{login:o,chooseScopes:t,onSuccess:r,onForgotPassword:a,onRegister:n,onCode:f,...s}=e,l=P(),[i,u]=en(void 0),[d,c]=en(!1),[g,y]=en(void 0),A=Ya(I=>{f?f(I):l.processCode(I).then(()=>{r&&r()}).catch(H=>Hs({color:"red",message:Vs(H)}))},[l,f,r]),v=Ya(I=>{c(!!I.mfaRequired),I.login&&u(I.login),I.memberships&&y(I.memberships),I.code&&(t?y(void 0):A(I.code))},[t,A]),B=Ya(I=>{A(I.code)},[A]);return wh(()=>{o&&!i&&l.get("auth/login/"+o).then(v).catch(I=>Hs({color:"red",message:Vs(I)}))},[l,o,i,v]),mo.createElement(Ut,{width:450},(()=>i?d?mo.createElement(Ns,{login:i,handleAuthResponse:v}):g?mo.createElement(Os,{login:i,memberships:g,handleAuthResponse:v}):e.projectId==="new"?mo.createElement(sr,{login:i,handleAuthResponse:v}):e.chooseScopes?mo.createElement(Ls,{login:i,scope:e.scope,handleAuthResponse:B}):mo.createElement("div",null,"Success"):mo.createElement(Fs,{onForgotPassword:a,onRegister:n,handleAuthResponse:v,disableGoogleAuth:e.disableGoogleAuth,disableEmailAuth:e.disableEmailAuth,...s},e.children))())}export{tn as AddressDisplay,fn as AddressInput,un as AnnotationInput,gb as AppShell,So as AsyncAutocomplete,Vn as AttachmentArrayDisplay,Un as AttachmentArrayInput,bo as AttachmentButton,Ee as AttachmentDisplay,St as AttachmentInput,Zo as BackboneElementDisplay,ot as BackboneElementInput,Rf as CalendarInput,At as CheckboxFormSection,vt as CodeInput,Do as CodeableConceptDisplay,lf as CodeableConceptInput,Jn as CodingDisplay,sf as CodingInput,Kn as ContactDetailDisplay,df as ContactDetailInput,Pt as ContactPointDisplay,wt as ContactPointInput,Ke as Container,Me as DateTimeInput,tA as DefaultResourceTimeline,Qn as DescriptionList,zn as DescriptionListEntry,xa as DiagnosticReportDisplay,Ut as Document,Vc as ElementDefinitionInputSelector,Of as ElementDefinitionTypeInput,pA as EncounterTimeline,ho as ErrorBoundary,vx as FhirPathTable,$ as Form,Pe as FormSection,On as Header,ht as HumanNameDisplay,pf as HumanNameInput,jn as IdentifierDisplay,If as IdentifierInput,Jr as Loading,Ye as Logo,se as MedplumLink,Uh as MedplumProvider,YM as MemoizedFhirPathTable,GM as MemoizedSearchControl,Zn as MoneyDisplay,gf as MoneyInput,Hn as Navbar,bm as ObservationTable,Lo as OperationOutcomeAlert,Ao as Panel,cF as PatientTimeline,AF as PlanDefinitionBuilder,_o as QuantityDisplay,De as QuantityInput,sw as QuestionnaireBuilder,ss as QuestionnaireForm,Yt as QuestionnaireItemType,ns as QuestionnaireRepeatWrapper,Dt as RangeDisplay,tt as RangeInput,fo as ReferenceDisplay,To as ReferenceInput,Mw as ReferenceRangeEditor,WI as ReferenceRangeGroupEditor,p0 as RegisterForm,qw as RequestGroupDisplay,tf as ResourceArrayDisplay,Tf as ResourceArrayInput,Ce as ResourceAvatar,je as ResourceBadge,Zw as ResourceBlame,nO as ResourceDiff,xD as ResourceForm,mO as ResourceHistoryTable,Lt as ResourceInput,Le as ResourceName,xe as ResourcePropertyDisplay,He as ResourcePropertyInput,Ia as ResourceTable,Ze as ResourceTimeline,PO as Scheduler,Ma as SearchChangeEvent,uo as SearchClickEvent,dx as SearchControl,Sl as SearchFieldEditor,Bl as SearchFilterEditor,Fa as SearchLoadEvent,FO as ServiceRequestTimeline,u1 as SignInForm,Ht as StatusBadge,Kf as Timeline,_e as TimelineItem,wf as TimingInput,Sa as addDateFilterBetween,FA as addField,wo as addFilter,cl as addLastMonthFilter,ba as addMissingFilter,pl as addNextMonthFilter,ml as addThisMonthFilter,ul as addTodayFilter,dl as addTomorrowFilter,xl as addYearToDateFilter,il as addYesterdayFilter,ve as buildFieldNameString,MA as clearFilters,zt as clearFiltersOnField,Ld as convertIsoToLocal,Rd as convertLocalToIso,ir as createScriptTag,sl as deleteFilter,Ie as getErrorsForInput,Mt as getIssuesForExpression,$c as getMonthString,Jl as getNewMultiSelectValues,nt as getOpString,vs as getRecaptcha,yl as getSearchOperators,gl as getSortField,da as getStartMonth,mg as getTimeString,be as getValueAndType,Cs as initRecaptcha,Wl as isChoiceQuestion,Xl as isQuestionEnabled,hl as isSortDescending,En as parseForm,Cl as renderValue,at as setFilters,bp as setOffset,Il as setPage,et as setPropertyValue,Pa as setSort,Zf as sortByDateAndPriority,wA as toggleSort,P as useMedplum,Qo as useMedplumContext,Qe as useMedplumNavigate,pt as useMedplumProfile,X as useResource};
68
68
  //# sourceMappingURL=index.mjs.map