@medplum/react 2.1.3 → 2.1.5

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