@medplum/react 2.1.10 → 2.1.12

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 Ys,{useEffect as ei,useMemo as oi,useState as ti}from"react";import{createContext as ri,useContext as ai}from"react";import{deepEquals as fi,isReference as cn,isResource as li,normalizeOperationOutcome as si}from"@medplum/core";import{useCallback as ii,useEffect as sn,useState as ui}from"react";import{allOk as di,normalizeOperationOutcome as ci}from"@medplum/core";import{useEffect as mi,useState as mt}from"react";var dn=ri(void 0);function Uo(){return ai(dn)}function P(){return Uo().medplum}function Qe(){return Uo().navigate}function pt(){return Uo().profile}function Zh(e){let o=e.medplum,t=e.navigate??ni,[r,a]=ti({profile:o.getProfile(),loading:!1});ei(()=>{function f(){a({...r,profile:o.getProfile()})}return o.addEventListener("change",f),()=>o.removeEventListener("change",f)},[o,r]);let n=oi(()=>({...r,medplum:o,navigate:t}),[r,o,t]);return Ys.createElement(dn.Provider,{value:n},e.children)}function ni(e){window.location.assign(e)}function X(e,o){let t=P(),[r,a]=ui(un(t,e)),n=ii(f=>{fi(f,r)||a(f)},[r,a]);return sn(()=>{n(un(t,e))},[t,e,n]),sn(()=>{let f=!0;return cn(e)&&t.readReference(e).then(s=>{f&&n(s)}).catch(s=>{f&&(n(void 0),o&&o(si(s)))}),()=>f=!1},[t,r,e,n,o]),r}function un(e,o){if(o){if(li(o))return o;if(cn(o))return e.getCachedReference(o)}}function rC(e,o){return yr("search",e,o)}function aC(e,o){return yr("searchOne",e,o)}function mn(e,o){return yr("searchResources",e,o)}function yr(e,o,t){let r=P(),[a,n]=mt(),[f,s]=mt(!1),[l,i]=mt(),[u,d]=mt();return mi(()=>{let c=r.fhirSearchUrl(o,t).toString();c!==a&&(n(c),r[e](o,t).then(x=>{s(!1),i(x),d(di)}).catch(x=>{s(!1),i(void 0),d(ci(x))}))},[r,e,o,t,a,i]),[l,f,u]}import{formatAddress as pi}from"@medplum/core";import pn from"react";function xn(e){let o=e.value;return o?pn.createElement(pn.Fragment,null,pi(o)):null}import{Group as xi,NativeSelect as In,TextInput as Qo}from"@mantine/core";import ze,{useRef as Ii,useState as gi}from"react";function gn(e,o){return e.line&&e.line.length>o?e.line[o]:""}function hn(e,o,t){let r=e.line||[];for(;r.length<=o;)r.push("");return r[o]=t,{...e,line:r}}function Cn(e){let[o,t]=gi(e.defaultValue||{}),r=Ii();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(hn(r.current||{},0,c))}function l(c){a(hn(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 ze.createElement(xi,{spacing:"xs",grow:!0,noWrap:!0},ze.createElement(In,{"data-testid":"address-use",defaultValue:o.use,onChange:c=>n(c.currentTarget.value),data:["","home","work","temp","old","billing"]}),ze.createElement(In,{"data-testid":"address-type",defaultValue:o.type,onChange:c=>f(c.currentTarget.value),data:["","postal","physical","both"]}),ze.createElement(Qo,{placeholder:"Line 1",defaultValue:gn(o,0),onChange:c=>s(c.currentTarget.value)}),ze.createElement(Qo,{placeholder:"Line 2",defaultValue:gn(o,1),onChange:c=>l(c.currentTarget.value)}),ze.createElement(Qo,{placeholder:"City",defaultValue:o.city,onChange:c=>i(c.currentTarget.value)}),ze.createElement(Qo,{placeholder:"State",defaultValue:o.state,onChange:c=>u(c.currentTarget.value)}),ze.createElement(Qo,{placeholder:"Postal Code",defaultValue:o.postalCode,onChange:c=>d(c.currentTarget.value)}))}import{TextInput as hi}from"@mantine/core";import{createReference as Ci}from"@medplum/core";import yi,{useRef as vi,useState as Si}from"react";function yn(e){let o=pt(),[t,r]=Si(e.defaultValue||{}),a=vi();a.current=t;function n(f){let s=f?{text:f,authorReference:o&&Ci(o),time:new Date().toISOString()}:{};r(s),e.onChange&&e.onChange(s)}return yi.createElement(hi,{name:e.name,placeholder:"Annotation text",defaultValue:t.text,onChange:f=>n(f.currentTarget.value)})}import{AppShell as _u,useMantineTheme as Zu}from"@mantine/core";import{showNotification as Yu}from"@mantine/notifications";import ao,{Suspense as ed,useEffect as od,useState as td}from"react";import{Alert as Ai}from"@mantine/core";import{normalizeErrorString as Fi}from"@medplum/core";import{forwardRef as bi,createElement as Sn}from"react";import to from"prop-types";var vn={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 Pi=Object.defineProperty,Di=Object.defineProperties,Ti=Object.getOwnPropertyDescriptors,xt=Object.getOwnPropertySymbols,Dn=Object.prototype.hasOwnProperty,Tn=Object.prototype.propertyIsEnumerable,bn=(e,o,t)=>o in e?Pi(e,o,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[o]=t,Pn=(e,o)=>{for(var t in o||(o={}))Dn.call(o,t)&&bn(e,t,o[t]);if(xt)for(var t of xt(o))Tn.call(o,t)&&bn(e,t,o[t]);return e},ki=(e,o)=>Di(e,Ti(o)),Bi=(e,o)=>{var t={};for(var r in e)Dn.call(e,r)&&o.indexOf(r)<0&&(t[r]=e[r]);if(e!=null&&xt)for(var r of xt(e))o.indexOf(r)<0&&Tn.call(e,r)&&(t[r]=e[r]);return t},p=(e,o,t)=>{let r=bi((a,n)=>{var f=a,{color:s="currentColor",size:l=24,stroke:i=2,children:u}=f,d=Bi(f,["color","size","stroke","children"]);return Sn("svg",Pn(ki(Pn({ref:n},vn),{width:l,height:l,stroke:s,strokeWidth:i,className:`tabler-icon tabler-icon-${e}`}),d),[...t.map(([c,x])=>Sn(c,x)),...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 vr=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 Sr=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 br=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 Pr=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 Dr=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 Tr=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 kr=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 Br=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 Ar=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 zo=p("check","IconCheck",[["path",{d:"M5 12l5 5l10 -10",key:"svg-0"}]]);var Fr=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 Mr=p("chevron-down","IconChevronDown",[["path",{d:"M6 9l6 6l6 -6",key:"svg-0"}]]);var We=p("circle-minus","IconCircleMinus",[["path",{d:"M12 12m-9 0a9 9 0 1 0 18 0a9 9 0 1 0 -18 0",key:"svg-0"}],["path",{d:"M9 12l6 0",key:"svg-1"}]]);var po=p("circle-plus","IconCirclePlus",[["path",{d:"M3 12a9 9 0 1 0 18 0a9 9 0 0 0 -18 0",key:"svg-0"}],["path",{d:"M9 12h6",key:"svg-1"}],["path",{d:"M12 9v6",key:"svg-2"}]]);var Wo=p("cloud-upload","IconCloudUpload",[["path",{d:"M7 18a4.6 4.4 0 0 1 0 -9a5 4.5 0 0 1 11 2h1a3.5 3.5 0 0 1 0 7h-1",key:"svg-0"}],["path",{d:"M9 15l3 -3l3 3",key:"svg-1"}],["path",{d:"M12 12l0 9",key:"svg-2"}]]);var wr=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 Or=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 Er=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 Lr=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 Rr=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 It=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 Nr=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 Hr=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 Vr=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 qr=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 Gr=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 Ur=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 zr=p("plus","IconPlus",[["path",{d:"M12 5l0 14",key:"svg-0"}],["path",{d:"M5 12l14 0",key:"svg-1"}]]);var Wr=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 Xr=p("search","IconSearch",[["path",{d:"M10 10m-7 0a7 7 0 1 0 14 0a7 7 0 1 0 -14 0",key:"svg-0"}],["path",{d:"M21 21l-6 -6",key:"svg-1"}]]);var go=p("settings","IconSettings",[["path",{d:"M10.325 4.317c.426 -1.756 2.924 -1.756 3.35 0a1.724 1.724 0 0 0 2.573 1.066c1.543 -.94 3.31 .826 2.37 2.37a1.724 1.724 0 0 0 1.065 2.572c1.756 .426 1.756 2.924 0 3.35a1.724 1.724 0 0 0 -1.066 2.573c.94 1.543 -.826 3.31 -2.37 2.37a1.724 1.724 0 0 0 -2.572 1.065c-.426 1.756 -2.924 1.756 -3.35 0a1.724 1.724 0 0 0 -2.573 -1.066c-1.543 .94 -3.31 -.826 -2.37 -2.37a1.724 1.724 0 0 0 -1.065 -2.572c-1.756 -.426 -1.756 -2.924 0 -3.35a1.724 1.724 0 0 0 1.066 -2.573c-.94 -1.543 .826 -3.31 2.37 -2.37c1 .608 2.296 .07 2.572 -1.065z",key:"svg-0"}],["path",{d:"M9 12a3 3 0 1 0 6 0a3 3 0 0 0 -6 0",key:"svg-1"}]]);var Xo=p("sort-ascending","IconSortAscending",[["path",{d:"M4 6l7 0",key:"svg-0"}],["path",{d:"M4 12l7 0",key:"svg-1"}],["path",{d:"M4 18l9 0",key:"svg-2"}],["path",{d:"M15 9l3 -3l3 3",key:"svg-3"}],["path",{d:"M18 6l0 12",key:"svg-4"}]]);var Jo=p("sort-descending","IconSortDescending",[["path",{d:"M4 6l9 0",key:"svg-0"}],["path",{d:"M4 12l7 0",key:"svg-1"}],["path",{d:"M4 18l7 0",key:"svg-2"}],["path",{d:"M15 15l3 3l3 -3",key:"svg-3"}],["path",{d:"M18 6l0 12",key:"svg-4"}]]);var Jr=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 $r=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 Kr=p("table-export","IconTableExport",[["path",{d:"M12.5 21h-7.5a2 2 0 0 1 -2 -2v-14a2 2 0 0 1 2 -2h14a2 2 0 0 1 2 2v7.5",key:"svg-0"}],["path",{d:"M3 10h18",key:"svg-1"}],["path",{d:"M10 3v18",key:"svg-2"}],["path",{d:"M16 19h6",key:"svg-3"}],["path",{d:"M19 16l3 3l-3 3",key:"svg-4"}]]);var $o=p("trash","IconTrash",[["path",{d:"M4 7l16 0",key:"svg-0"}],["path",{d:"M10 11l0 6",key:"svg-1"}],["path",{d:"M14 11l0 6",key:"svg-2"}],["path",{d:"M5 7l1 12a2 2 0 0 0 2 2h8a2 2 0 0 0 2 -2l1 -12",key:"svg-3"}],["path",{d:"M9 7v-3a1 1 0 0 1 1 -1h4a1 1 0 0 1 1 1v3",key:"svg-4"}]]);var 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(Ai,{icon:_r.createElement(ro,{size:16}),title:"Something went wrong",color:"red"},Fi(this.state.error)):this.props.children}};import{Center as Mi,Loader as wi}from"@mantine/core";import kn from"react";function Zr(){return kn.createElement(Mi,{style:{width:"100%",height:"100vh"}},kn.createElement(wi,null))}import{Avatar as uu,createStyles as du,Group as vt,Header as cu,Menu as He,Stack as mu,Text as Ko,UnstyledButton as Hn}from"@mantine/core";import{formatHumanName as pu,getReferenceString as Vn}from"@medplum/core";import U,{useState as xu}from"react";import{formatHumanName as Oi}from"@medplum/core";import Bn from"react";function Ct(e){let o=e.value;return o?Bn.createElement(Bn.Fragment,null,Oi(o,e.options)):null}import{Avatar as Fn}from"@mantine/core";import{getDisplayString as Ui,getImageSrc as Qi}from"@medplum/core";import Yr from"react";import{Anchor as Ei}from"@mantine/core";import{isReference as Li,isResource as Ri}from"@medplum/core";import Ni from"react";function N(e){e.preventDefault(),e.stopPropagation()}function yt(e){if(An(e))return!0;if(e instanceof HTMLTableCellElement){let o=e.children;if(o.length===1&&An(o[0]))return!0}return!1}function An(e){return e instanceof HTMLInputElement&&e.type==="checkbox"}function se(e){let o=Qe(),{to:t,suffix:r,label:a,onClick:n,children:f,...s}=e,l=Hi(t);return r&&(l+="/"+r),Ni.createElement(Ei,{href:l,"aria-label":a,onClick:i=>{N(i),n?n(i):t&&o(l)},...s},f)}function Hi(e){if(e){if(typeof e=="string")return Vi(e);if(Ri(e))return qi(e);if(Li(e))return Gi(e)}return"#"}function Vi(e){return e.startsWith("http://")||e.startsWith("https://")||e.startsWith("/")?e:"/"+e}function qi(e){return`/${e.resourceType}/${e.id}`}function Gi(e){return`/${e.reference}`}function he(e){let o=X(e.value),t=o?Ui(o):e.alt??"",r=(o&&Qi(o))??e.src,a=e.radius??"xl",n={...e};return delete n.value,delete n.link,e.link?Yr.createElement(se,{to:o},Yr.createElement(Fn,{src:r,alt:t,radius:a,...n})):Yr.createElement(Fn,{src:r,alt:t,radius:a,...n})}import{createStyles as ji,Group as _i,Text as wn}from"@mantine/core";import{formatHumanName as Zi,getDisplayString as Rn,getReferenceString as Yi,isUUID as eu}from"@medplum/core";import Xe,{forwardRef as ou,useCallback as On}from"react";import{Loader as zi,MultiSelect as Wi}from"@mantine/core";import{showNotification as Xi}from"@mantine/notifications";import{normalizeErrorString as Ji}from"@medplum/core";import Mn,{useCallback as Co,useEffect as $i,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=Ki(o),u=yo(null),[d,c]=vo(),[x,y]=vo(),[k,T]=vo(),[B,A]=vo(),[I,O]=vo(i.map(r)),[g,M]=vo([]),Y=yo();Y.current=d;let ne=yo();ne.current=x;let Le=yo();Le.current=k;let oo=yo();oo.current=B;let me=yo();me.current=g;let C=Co(()=>{y(void 0);let fe=u.current?.value.trim()||"";if(fe===Y.current)return;c(fe);let te=new AbortController;T(te),a(fe,te.signal).then(be=>{te.signal.aborted||(M(be.map(r)),T(void 0),oo.current&&(be.length>0&&n(be.slice(0,1)),A(!1)))}).catch(be=>{te.signal.aborted||be.message.includes("aborted")||Xi({color:"red",message:Ji(be)})})},[a,n,r]),V=Co(()=>{Le.current&&(Le.current.abort(),T(void 0)),ne.current!==void 0&&window.clearTimeout(ne.current);let fe=window.setTimeout(()=>C(),100);y(fe)},[C]),we=Co(fe=>{let te=[],be=[];for(let ln of fe){let ct=me.current?.find(Zs=>Zs.value===ln),Go=ct?.resource;!Go&&s!==!1&&f&&(Go=f(ln),ct=r(Go)),Go&&te.push(Go),ct&&be.push(ct)}n(te),O(be)},[s,n,f,r]),v=Co(fe=>{fe.key==="Enter"&&(!ne.current&&!Le.current?(N(fe),me.current&&me.current.length>0&&(M(me.current.slice(0,1)),we([me.current[0].value]))):A(!0))},[we]),z=Co(fe=>{let te=r(f(fe));return M([...me.current,te]),te},[f,M,r]),Re=Co((fe,te)=>!te,[]);return $i(()=>()=>{Le.current&&Le.current.abort()},[]),Mn.createElement(Wi,{...l,ref:u,defaultValue:i.map(t),searchable:!0,onKeyDown:v,onSearchChange:V,data:[...I,...g],onFocus:C,onChange:we,onCreate:z,rightSectionWidth:40,rightSection:k?Mn.createElement(zi,{size:16}):null,filter:Re,creatable:!0})}function Ki(e){return e?Array.isArray(e)?e:[e]:[]}var tu=ji(()=>({searchInput:{input:{width:220,transition:"width 0.2s"},"input:focus":{width:400},"@media (max-width: 800px)":{input:{width:150},"input:focus":{width:150}}}}));function ru(e){return e.id}function au(e){return{value:e.id,label:Rn(e),resource:e}}function Nn(e){let{classes:o}=tu(),t=Qe(),r=P(),a=On(async(f,s)=>{let l=fu(f),i={signal:s},u=await r.graphql(l,void 0,void 0,i);return lu(u,f)},[r]),n=On(f=>{f.length>0&&t(`/${Yi(f[0])}`)},[t]);return Xe.createElement(So,{key:`${e.pathname}?${e.searchParams}`,size:"sm",radius:"md",className:o.searchInput,icon:Xe.createElement(Xr,{size:16}),placeholder:"Search",itemComponent:nu,toKey:ru,toOption:au,onChange:n,loadOptions:a,maxSelectedValues:0,clearSearchOnChange:!0,clearable:!1})}var nu=ou(({resource:e,...o},t)=>{let r;return e.resourceType==="Patient"?r=e.birthDate:e.resourceType==="ServiceRequest"&&(r=e.subject?.display),Xe.createElement("div",{ref:t,...o},Xe.createElement(_i,{noWrap:!0},Xe.createElement(he,{value:e}),Xe.createElement("div",null,Xe.createElement(wn,null,Rn(e)),Xe.createElement(wn,{size:"xs",color:"dimmed"},r))))});function fu(e){let o=JSON.stringify(e);return eu(e)?`{
1
+ import pi,{useEffect as xi,useMemo as Ii,useState as gi}from"react";import{createContext as hi,useContext as Ci}from"react";import{deepEquals as vi,isReference as Cn,isResource as Si,normalizeOperationOutcome as bi}from"@medplum/core";import{useCallback as Pi,useEffect as In,useState as Di}from"react";import{allOk as Ti,normalizeOperationOutcome as ki}from"@medplum/core";import{useEffect as Bi,useState as It}from"react";var hn=hi(void 0);function Xo(){return Ci(hn)}function P(){return Xo().medplum}function Qe(){return Xo().navigate}function gt(){return Xo().profile}function BC(e){let o=e.medplum,t=e.navigate??yi,[r,a]=gi({profile:o.getProfile(),loading:!1});xi(()=>{function f(){a({...r,profile:o.getProfile()})}return o.addEventListener("change",f),()=>o.removeEventListener("change",f)},[o,r]);let n=Ii(()=>({...r,medplum:o,navigate:t}),[r,o,t]);return pi.createElement(hn.Provider,{value:n},e.children)}function yi(e){window.location.assign(e)}function z(e,o){let t=P(),[r,a]=Di(gn(t,e)),n=Pi(f=>{vi(f,r)||a(f)},[r,a]);return In(()=>{n(gn(t,e))},[t,e,n]),In(()=>{let f=!0;return Cn(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 gn(e,o){if(o){if(Si(o))return o;if(Cn(o))return e.getCachedReference(o)}}function OC(e,o){return Dr("search",e,o)}function yn(e,o){return Dr("searchOne",e,o)}function vn(e,o){return Dr("searchResources",e,o)}function Dr(e,o,t){let r=P(),[a,n]=It(),[f,s]=It(!1),[l,i]=It(),[u,c]=It();return Bi(()=>{let d=r.fhirSearchUrl(o,t).toString();d!==a&&(n(d),r[e](o,t).then(x=>{s(!1),i(x),c(Ti)}).catch(x=>{s(!1),i(void 0),c(ki(x))}))},[r,e,o,t,a,i]),[l,f,u]}import{formatAddress as Ai}from"@medplum/core";import Sn from"react";function bn(e){let o=e.value;return o?Sn.createElement(Sn.Fragment,null,Ai(o)):null}import{Group as Mi,NativeSelect as Pn,TextInput as Jo}from"@mantine/core";import ze,{useRef as Fi,useState as wi}from"react";function Dn(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 kn(e){let[o,t]=wi(e.defaultValue||{}),r=Fi();r.current=o;function a(d){t(d),e.onChange&&e.onChange(d)}function n(d){a({...r.current,use:d})}function f(d){a({...r.current,type:d})}function s(d){a(Tn(r.current||{},0,d))}function l(d){a(Tn(r.current||{},1,d))}function i(d){a({...r.current,city:d})}function u(d){a({...r.current,state:d})}function c(d){a({...r.current,postalCode:d})}return ze.createElement(Mi,{spacing:"xs",grow:!0,noWrap:!0},ze.createElement(Pn,{"data-testid":"address-use",defaultValue:o.use,onChange:d=>n(d.currentTarget.value),data:["","home","work","temp","old","billing"]}),ze.createElement(Pn,{"data-testid":"address-type",defaultValue:o.type,onChange:d=>f(d.currentTarget.value),data:["","postal","physical","both"]}),ze.createElement(Jo,{placeholder:"Line 1",defaultValue:Dn(o,0),onChange:d=>s(d.currentTarget.value)}),ze.createElement(Jo,{placeholder:"Line 2",defaultValue:Dn(o,1),onChange:d=>l(d.currentTarget.value)}),ze.createElement(Jo,{placeholder:"City",defaultValue:o.city,onChange:d=>i(d.currentTarget.value)}),ze.createElement(Jo,{placeholder:"State",defaultValue:o.state,onChange:d=>u(d.currentTarget.value)}),ze.createElement(Jo,{placeholder:"Postal Code",defaultValue:o.postalCode,onChange:d=>c(d.currentTarget.value)}))}import{TextInput as Oi}from"@mantine/core";import{createReference as Ei}from"@medplum/core";import Li,{useRef as Ri,useState as Ni}from"react";function Bn(e){let o=gt(),[t,r]=Ni(e.defaultValue||{}),a=Ri();a.current=t;function n(f){let s=f?{text:f,authorReference:o&&Ei(o),time:new Date().toISOString()}:{};r(s),e.onChange&&e.onChange(s)}return Li.createElement(Oi,{name:e.name,placeholder:"Annotation text",defaultValue:t.text,onChange:f=>n(f.currentTarget.value)})}import{AppShell as cd,useMantineTheme as md}from"@mantine/core";import{showNotification as pd}from"@mantine/notifications";import fo,{Suspense as xd,useEffect as Id,useState as gd}from"react";import{Alert as zi}from"@mantine/core";import{normalizeErrorString as Wi}from"@medplum/core";import{forwardRef as Hi,createElement as Mn}from"react";import ao from"prop-types";var An={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 Vi=Object.defineProperty,qi=Object.defineProperties,Gi=Object.getOwnPropertyDescriptors,ht=Object.getOwnPropertySymbols,On=Object.prototype.hasOwnProperty,En=Object.prototype.propertyIsEnumerable,Fn=(e,o,t)=>o in e?Vi(e,o,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[o]=t,wn=(e,o)=>{for(var t in o||(o={}))On.call(o,t)&&Fn(e,t,o[t]);if(ht)for(var t of ht(o))En.call(o,t)&&Fn(e,t,o[t]);return e},Ui=(e,o)=>qi(e,Gi(o)),Qi=(e,o)=>{var t={};for(var r in e)On.call(e,r)&&o.indexOf(r)<0&&(t[r]=e[r]);if(e!=null&&ht)for(var r of ht(e))o.indexOf(r)<0&&En.call(e,r)&&(t[r]=e[r]);return t},p=(e,o,t)=>{let r=Hi((a,n)=>{var f=a,{color:s="currentColor",size:l=24,stroke:i=2,children:u}=f,c=Qi(f,["color","size","stroke","children"]);return Mn("svg",wn(Ui(wn({ref:n},An),{width:l,height:l,stroke:s,strokeWidth:i,className:`tabler-icon tabler-icon-${e}`}),c),[...t.map(([d,x])=>Mn(d,x)),...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 Tr=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 kr=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 Br=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 Ar=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 Mr=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 Fr=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 wr=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 Or=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 Er=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 He=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 $o=p("check","IconCheck",[["path",{d:"M5 12l5 5l10 -10",key:"svg-0"}]]);var Lr=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 Rr=p("chevron-down","IconChevronDown",[["path",{d:"M6 9l6 6l6 -6",key:"svg-0"}]]);var We=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 go=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 Ko=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 Nr=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 Hr=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 Vr=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 qr=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 Gr=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 ho=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 Co=p("equal","IconEqual",[["path",{d:"M5 10h14",key:"svg-0"}],["path",{d:"M5 14h14",key:"svg-1"}]]);var Ct=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 Ur=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 Qr=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 zr=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 Wr=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 yt=p("math-greater","IconMathGreater",[["path",{d:"M5 18l14 -6l-14 -6",key:"svg-0"}]]);var vt=p("math-lower","IconMathLower",[["path",{d:"M19 18l-14 -6l14 -6",key:"svg-0"}]]);var Xr=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 Jr=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 $r=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 Kr=p("plus","IconPlus",[["path",{d:"M12 5l0 14",key:"svg-0"}],["path",{d:"M5 12l14 0",key:"svg-1"}]]);var jr=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 _r=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 yo=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 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 Yr=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 ea=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 Zo=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 oa=p("x","IconX",[["path",{d:"M18 6l-12 12",key:"svg-0"}],["path",{d:"M6 6l12 12",key:"svg-1"}]]);import ta from"react";var vo=class extends ta.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?ta.createElement(zi,{icon:ta.createElement(no,{size:16}),title:"Something went wrong",color:"red"},Wi(this.state.error)):this.props.children}};import{Center as Xi,Loader as Ji}from"@mantine/core";import Ln from"react";function ra(){return Ln.createElement(Xi,{style:{width:"100%",height:"100vh"}},Ln.createElement(Ji,null))}import{Avatar as Du,createStyles as Tu,Group as Pt,Header as ku,Menu as Ve,Stack as Bu,Text as Yo,UnstyledButton as Xn}from"@mantine/core";import{formatHumanName as Au,getReferenceString as Jn}from"@medplum/core";import G,{useState as Mu}from"react";import{formatHumanName as $i}from"@medplum/core";import Rn from"react";function St(e){let o=e.value;return o?Rn.createElement(Rn.Fragment,null,$i(o,e.options)):null}import{Avatar as Hn}from"@mantine/core";import{getDisplayString as ru,getImageSrc as au}from"@medplum/core";import aa from"react";import{Anchor as Ki}from"@mantine/core";import{isReference as ji,isResource as _i}from"@medplum/core";import Zi from"react";function R(e){e.preventDefault(),e.stopPropagation()}function bt(e){if(Nn(e))return!0;if(e instanceof HTMLTableCellElement){let o=e.children;if(o.length===1&&Nn(o[0]))return!0}return!1}function Nn(e){return e instanceof HTMLInputElement&&e.type==="checkbox"}function le(e){let o=Qe(),{to:t,suffix:r,label:a,onClick:n,children:f,...s}=e,l=Yi(t);return r&&(l+="/"+r),Zi.createElement(Ki,{href:l,"aria-label":a,onClick:i=>{R(i),n?n(i):t&&o(l)},...s},f)}function Yi(e){if(e){if(typeof e=="string")return eu(e);if(_i(e))return ou(e);if(ji(e))return tu(e)}return"#"}function eu(e){return e.startsWith("http://")||e.startsWith("https://")||e.startsWith("/")?e:"/"+e}function ou(e){return`/${e.resourceType}/${e.id}`}function tu(e){return`/${e.reference}`}function ge(e){let o=z(e.value),t=o?ru(o):e.alt??"",r=(o&&au(o))??e.src,a=e.radius??"xl",n={...e};return delete n.value,delete n.link,e.link?aa.createElement(le,{to:o},aa.createElement(Hn,{src:r,alt:t,radius:a,...n})):aa.createElement(Hn,{src:r,alt:t,radius:a,...n})}import{createStyles as du,Group as cu,Text as qn}from"@mantine/core";import{formatHumanName as mu,getDisplayString as zn,getReferenceString as pu,isUUID as xu}from"@medplum/core";import Xe,{forwardRef as Iu,useCallback as Gn}from"react";import{Loader as nu,MultiSelect as fu}from"@mantine/core";import{showNotification as lu}from"@mantine/notifications";import{normalizeErrorString as su}from"@medplum/core";import Vn,{useCallback as So,useEffect as iu,useRef as bo,useState as Po}from"react";function Do(e){let{defaultValue:o,toKey:t,toOption:r,loadOptions:a,onChange:n,onCreate:f,creatable:s,...l}=e,i=uu(o),u=bo(null),[c,d]=Po(),[x,y]=Po(),[g,T]=Po(),[B,k]=Po(),[A,W]=Po(i.map(r)),[v,L]=Po([]),Z=bo();Z.current=c;let ae=bo();ae.current=x;let Re=bo();Re.current=g;let ro=bo();ro.current=B;let ce=bo();ce.current=v;let h=So(()=>{y(void 0);let ne=u.current?.value.trim()||"";if(ne===Z.current)return;d(ne);let oe=new AbortController;T(oe),a(ne,oe.signal).then(ve=>{oe.signal.aborted||(L(ve.map(r)),T(void 0),ro.current&&(ve.length>0&&n(ve.slice(0,1)),k(!1)))}).catch(ve=>{oe.signal.aborted||ve.message.includes("aborted")||lu({color:"red",message:su(ve)})})},[a,n,r]),H=So(()=>{Re.current&&(Re.current.abort(),T(void 0)),ae.current!==void 0&&window.clearTimeout(ae.current);let ne=window.setTimeout(()=>h(),100);y(ne)},[h]),we=So(ne=>{let oe=[],ve=[];for(let xn of ne){let xt=ce.current?.find(mi=>mi.value===xn),Wo=xt?.resource;!Wo&&s!==!1&&f&&(Wo=f(xn),xt=r(Wo)),Wo&&oe.push(Wo),xt&&ve.push(xt)}n(oe),W(ve)},[s,n,f,r]),C=So(ne=>{ne.key==="Enter"&&(!ae.current&&!Re.current?(R(ne),ce.current&&ce.current.length>0&&(L(ce.current.slice(0,1)),we([ce.current[0].value]))):k(!0))},[we]),U=So(ne=>{let oe=r(f(ne));return L([...ce.current,oe]),oe},[f,L,r]),Ne=So((ne,oe)=>!oe,[]);return iu(()=>()=>{Re.current&&Re.current.abort()},[]),Vn.createElement(fu,{...l,ref:u,defaultValue:i.map(t),searchable:!0,onKeyDown:C,onSearchChange:H,data:[...A,...v],onFocus:h,onChange:we,onCreate:U,rightSectionWidth:40,rightSection:g?Vn.createElement(nu,{size:16}):null,filter:Ne,creatable:!0,withinPortal:!0})}function uu(e){return e?Array.isArray(e)?e:[e]:[]}var gu=du(()=>({searchInput:{input:{width:220,transition:"width 0.2s"},"input:focus":{width:400},"@media (max-width: 800px)":{input:{width:150},"input:focus":{width:150}}}}));function hu(e){return e.id}function Cu(e){return{value:e.id,label:zn(e),resource:e}}function Wn(e){let{classes:o}=gu(),t=Qe(),r=P(),a=Gn(async(f,s)=>{let l=vu(f),i={signal:s},u=await r.graphql(l,void 0,void 0,i);return Su(u,f)},[r]),n=Gn(f=>{f.length>0&&t(`/${pu(f[0])}`)},[t]);return Xe.createElement(Do,{key:`${e.pathname}?${e.searchParams}`,size:"sm",radius:"md",className:o.searchInput,icon:Xe.createElement(_r,{size:16}),placeholder:"Search",itemComponent:yu,toKey:hu,toOption:Cu,onChange:n,loadOptions:a,maxSelectedValues:0,clearSearchOnChange:!0,clearable:!1})}var yu=Iu(({resource:e,...o},t)=>{let r;return e.resourceType==="Patient"?r=e.birthDate:e.resourceType==="ServiceRequest"&&(r=e.subject?.display),Xe.createElement("div",{ref:t,...o},Xe.createElement(cu,{noWrap:!0},Xe.createElement(ge,{value:e}),Xe.createElement("div",null,Xe.createElement(qn,null,zn(e)),Xe.createElement(qn,{size:"xs",color:"dimmed"},r))))});function vu(e){let o=JSON.stringify(e);return xu(e)?`{
2
2
  Patients1: PatientList(_id: ${o}, _count: 1) {
3
3
  resourceType
4
4
  id
@@ -61,8 +61,8 @@ import Ys,{useEffect as ei,useMemo as oi,useState as ti}from"react";import{creat
61
61
  display
62
62
  }
63
63
  }
64
- }`.replace(/\s+/g," ")}function lu(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),iu(su(t),o).slice(0,5)}function su(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 iu(e,o){return e.sort((t,r)=>En(r,o)-En(t,o))}function En(e,o){let t=0;if(e.identifier)for(let r of e.identifier)t=Math.max(t,Ln(r.value,o));if(e.resourceType==="Patient"&&e.name)for(let r of e.name)t=Math.max(t,Ln(Zi(r),o));return t}function Ln(e,o){if(!e)return 0;let t=e.toLowerCase().indexOf(o.toLowerCase());return t<0?0:100-t}var Iu=du(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 qn(e){let o=Uo(),{medplum:t,profile:r,navigate:a}=o,n=t.getLogins(),{classes:f,cx:s}=Iu(),[l,i]=xu(!1);return U.createElement(cu,{height:60,p:8,style:{zIndex:101}},U.createElement(vt,{position:"apart"},U.createElement(vt,{spacing:"xs"},U.createElement(Hn,{className:f.logoButton,onClick:e.navbarToggle},e.logo),!e.headerSearchDisabled&&U.createElement(Nn,{pathname:e.pathname,searchParams:e.searchParams})),U.createElement(He,{width:260,shadow:"xl",position:"bottom-end",transitionProps:{transition:"pop-top-right"},opened:l,onClose:()=>i(!1)},U.createElement(He.Target,null,U.createElement(Hn,{className:s(f.user,{[f.userActive]:l}),onClick:()=>i(u=>!u)},U.createElement(vt,{spacing:7},U.createElement(he,{value:r,radius:"xl",size:24}),U.createElement(Ko,{size:"sm",className:f.userName},pu(r?.name?.[0])),U.createElement(Mr,{size:12,stroke:1.5})))),U.createElement(He.Dropdown,null,U.createElement(mu,{align:"center",p:"xl"},U.createElement(he,{size:"xl",radius:100,value:o.profile}),U.createElement(Ct,{value:o.profile?.name?.[0]}),U.createElement(Ko,{color:"dimmed",size:"xs"},t.getActiveLogin()?.project.display)),n.length>1&&U.createElement(He.Divider,null),n.map(u=>u.profile.reference!==Vn(o.profile)&&U.createElement(He.Item,{key:u.profile.reference,onClick:()=>{t.setActiveLogin(u).then(()=>window.location.reload()).catch(console.log)}},U.createElement(vt,null,U.createElement(uu,{radius:"xl"}),U.createElement("div",{style:{flex:1}},U.createElement(Ko,{size:"sm",weight:500},u.profile.display),U.createElement(Ko,{color:"dimmed",size:"xs"},u.project.display))))),U.createElement(He.Divider,null),U.createElement(He.Item,{icon:U.createElement($r,{size:14,stroke:1.5}),onClick:()=>a("/signin")},"Add another account"),U.createElement(He.Item,{icon:U.createElement(go,{size:14,stroke:1.5}),onClick:()=>a(`/${Vn(r)}`)},"Account settings"),U.createElement(He.Item,{icon:U.createElement(qr,{size:14,stroke:1.5}),onClick:async()=>{await t.signOut(),a("/signin")}},"Sign out"),U.createElement(Ko,{size:"xs",color:"dimmed",align:"center"},e.version)))))}import{Button as Gu,createStyles as Uu,Navbar as oa,ScrollArea as Qu,Space as zu,Text as Wu}from"@mantine/core";import le,{useState as Xu}from"react";import{Button as yu,Group as vu,Modal as Su,NativeSelect as bu,Stack as Pu,TextInput as Du}from"@mantine/core";import{showNotification as Un}from"@mantine/notifications";import{deepClone as Tu,normalizeErrorString as ku}from"@medplum/core";import Je from"react";import Cu from"react";function Gn(e){let o={};for(let t of Array.from(e.elements))t instanceof HTMLInputElement?gu(o,t):t instanceof HTMLTextAreaElement?o[t.name]=t.value:t instanceof HTMLSelectElement&&hu(o,t);return o}function gu(e,o){o.disabled||(o.type==="checkbox"||o.type==="radio")&&!o.checked||(e[o.name]=o.value)}function hu(e,o){e[o.name]=o.value}function $(e){return Cu.createElement("form",{style:e.style,"data-testid":e.testid,onSubmit:o=>{o.preventDefault();let t=Gn(o.target);e.onSubmit&&e.onSubmit(t)}},e.children)}function Qn(e){let o=P(),t=o.getUserConfiguration();function r(a){let{menuname:n,bookmarkname:f}=a,s=`${e.pathname}?${e.searchParams.toString()}`,l=Tu(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"}),Un({color:"green",message:"Success"}),e.onOk()}).catch(u=>{Un({color:"red",message:ku(u)})})}return Je.createElement(Su,{title:"Add Bookmark",closeButtonProps:{"aria-label":"Close"},opened:e.visible,onClose:e.onCancel},Je.createElement($,{onSubmit:r},Je.createElement(Pu,null,Je.createElement(Bu,{config:t}),Je.createElement(Du,{label:"Bookmark Name",type:"text",name:"bookmarkname",placeholder:"Bookmark Name",withAsterisk:!0}),Je.createElement(vu,{position:"right"},Je.createElement(yu,{mt:"sm",type:"submit"},"OK")))))}function Bu(e){function o(r){return r?.menu?.map(a=>a.title)}let t=o(e.config);return Je.createElement(bu,{name:"menuname",defaultValue:t[0],label:"Select Menu Option",placeholder:"Menu",data:t,withAsterisk:!0})}import Hu,{useCallback as Vu,useState as qu}from"react";import Eu,{useState as Lu}from"react";import Au,{useCallback as Fu}from"react";function ea(e){return typeof e.code=="string"?e.code:JSON.stringify(e)}function Mu(e){return typeof e.display=="string"?e.display:ea(e)}function wu(e){return{value:ea(e),label:Mu(e),resource:e}}function Ou(e){return{code:e,display:e}}function bo(e){let o=P(),{binding:t,creatable:r,clearable:a,...n}=e,f=Fu(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(x=>x.code===c.code)&&d.push(c);return d},[o,t]);return Au.createElement(So,{...n,creatable:r??!0,clearable:a??!0,toKey:ea,toOption:wu,loadOptions:f,onCreate:Ou,getCreateLabel:r===!1?void 0:s=>`+ Create ${s}`})}function St(e){let[o,t]=Lu(e.defaultValue);function r(a){let n=a[0],f=Nu(n);t(f),e.onChange&&e.onChange(f)}return Eu.createElement(bo,{binding:e.binding,name:e.name,placeholder:e.placeholder,defaultValue:Ru(o),onChange:r,creatable:e.creatable,maxSelectedValues:e.maxSelectedValues??1,clearSearchOnChange:e.clearSearchOnChange,clearable:e.clearable})}function Ru(e){return e?{code:e}:void 0}function Nu(e){return e?.code}function Po(e){let[o,t]=qu(e.defaultValue),r=e.onChange,a=Vu(n=>{t(n),r&&r(n)},[r]);return Hu.createElement(St,{"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 zn=Uu(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 Wn(e){let{classes:o}=zn(),t=Qe(),r=Ku(e.pathname,e.searchParams,e.menus),[a,n]=Xu(!1);function f(l,i){l.stopPropagation(),l.preventDefault(),t(i),window.innerWidth<768&&e.closeNavbar()}function s(l){l&&t(`/${l}`)}return le.createElement(le.Fragment,null,le.createElement(oa,{width:{sm:250},p:"xs"},le.createElement(Qu,null,!e.resourceTypeSearchDisabled&&le.createElement(oa.Section,{mb:"sm"},le.createElement(Po,{key:window.location.pathname,name:"resourceType",placeholder:"Resource Type",onChange:l=>s(l)})),le.createElement(oa.Section,{grow:!0},e.menus?.map(l=>le.createElement(le.Fragment,{key:`menu-${l.title}`},le.createElement(Wu,{className:o.menuTitle},l.title),l.links?.map(i=>le.createElement(Ju,{key:i.href,to:i.href,active:i.href===r?.href,onClick:u=>f(u,i.href)},le.createElement($u,{to:i.href,icon:i.icon}),le.createElement("span",null,i.label))))),e.displayAddBookmark&&le.createElement(Gu,{variant:"subtle",size:"xs",mt:"xl",leftIcon:le.createElement(zr,{size:"0.75rem"}),onClick:()=>n(!0)},"Add Bookmark")))),e.pathname&&e.searchParams&&le.createElement(Qn,{pathname:e.pathname,searchParams:e.searchParams,visible:a,onOk:()=>n(!1),onCancel:()=>n(!1)}))}function Ju(e){let{classes:o,cx:t}=zn();return le.createElement(se,{onClick:e.onClick,to:e.to,className:t(o.link,{[o.linkActive]:e.active})},e.children)}function $u(e){return e.icon?e.icon:le.createElement(zu,{w:30})}function Ku(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=ju(e,o,f.href);s>a&&(a=s,r=f)}return r}function ju(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 Vb(e){let o=Zu(),[t,r]=td(localStorage.navbarOpen==="true"),a=P(),n=pt();od(()=>{function i(){Yu({color:"red",message:"No connection to server",autoClose:!1})}return a.addEventListener("offline",i),()=>a.removeEventListener("offline",i)},[a]);function f(i){localStorage.navbarOpen=i.toString(),r(i)}function s(){f(!1)}function l(){f(!t)}return a.isLoading()?ao.createElement(Zr,null):ao.createElement(_u,{styles:{main:{background:o.colorScheme==="dark"?o.colors.dark[8]:o.colors.gray[0]}},padding:0,fixed:!0,header:n&&ao.createElement(qn,{pathname:e.pathname,searchParams:e.searchParams,headerSearchDisabled:e.headerSearchDisabled,logo:e.logo,version:e.version,navbarToggle:l}),navbar:n&&t?ao.createElement(Wn,{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(ed,{fallback:ao.createElement(Zr,null)},e.children)))}import ta from"react";import{Anchor as rd}from"@mantine/core";import $e from"react";function Oe(e){let{contentType:o,url:t,title:r}=e.value??{};return t?$e.createElement("div",{"data-testid":"attachment-display"},o?.startsWith("image/")&&$e.createElement("img",{"data-testid":"attachment-image",style:{maxWidth:e.maxWidth},src:t,alt:r}),o?.startsWith("video/")&&$e.createElement("video",{"data-testid":"attachment-video",style:{maxWidth:e.maxWidth},controls:!0},$e.createElement("source",{type:o,src:t})),o==="application/pdf"&&$e.createElement("div",{"data-testid":"attachment-pdf",style:{maxWidth:e.maxWidth,minHeight:400}},$e.createElement("iframe",{width:"100%",height:"400",src:t+"#navpanes=0",allowFullScreen:!0,frameBorder:0,seamless:!0})),$e.createElement("div",{"data-testid":"download-link",style:{padding:"2px 16px 16px 16px"}},$e.createElement(rd,{href:t,"data-testid":"attachment-details",target:"_blank",rel:"noopener noreferrer",download:ad(r)},r||"Download"))):null}function ad(e){return e?.includes(".")?e:void 0}function Xn(e){return ta.createElement("div",null,e.values?.map((o,t)=>ta.createElement("div",{key:"attatchment-"+t},ta.createElement(Oe,{value:o,maxWidth:e.maxWidth}))))}import{ActionIcon as Jn}from"@mantine/core";import ie,{useRef as ld,useState as sd}from"react";import ra,{useRef as nd}from"react";import{normalizeOperationOutcome as fd}from"@medplum/core";function Do(e){let o=P(),t=nd(null);function r(f){N(f),t.current?.click()}function a(f){N(f);let s=f.target.files;s&&Array.from(s).forEach(n)}function n(f){if(!f||!f.name)return;e.onUploadStart&&e.onUploadStart();let l=f.name,i=f.type||"application/octet-stream";o.createBinary(f,l,i,e.onUploadProgress).then(u=>{e.onUpload({contentType:u.contentType,url:u.url,title:l})}).catch(u=>{e.onUploadError&&e.onUploadError(fd(u))})}return ra.createElement(ra.Fragment,null,ra.createElement("input",{type:"file","data-testid":"upload-file-input",style:{display:"none"},ref:t,onChange:f=>a(f)}),e.children({onClick:r}))}function $n(e){let[o,t]=sd(e.defaultValue??[]),r=ld();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(Oe,{value:n,maxWidth:200})),ie.createElement("td",null,ie.createElement(Jn,{title:"Remove",size:"sm",onClick:s=>{N(s);let l=o.slice();l.splice(f,1),a(l)}},ie.createElement(We,null))))),ie.createElement("tr",null,ie.createElement("td",null),ie.createElement("td",null,ie.createElement(Do,{onUpload:n=>{a([...r.current,n])}},n=>ie.createElement(Jn,{...n,title:"Add",size:"sm",color:"green"},ie.createElement(Wo,{size:16})))))))}import{Button as Kn}from"@mantine/core";import To,{useState as id}from"react";function bt(e){let[o,t]=id(e.defaultValue);function r(a){t(a),e.onChange&&e.onChange(a)}return o?To.createElement(To.Fragment,null,To.createElement(Oe,{value:o,maxWidth:200}),To.createElement(Kn,{onClick:a=>{N(a),r(void 0)}},"Remove")):To.createElement(Do,{onUpload:r},a=>To.createElement(Kn,{...a},"Upload..."))}import{normalizeOperationOutcome as Ud}from"@medplum/core";import Mt,{useEffect as Qd,useState as nf}from"react";import jn from"react";import{Container as ud,createStyles as dd}from"@mantine/core";import cd from"react";var md=dd(()=>({root:{"@media (max-width: 800px)":{paddingLeft:4,paddingRight:4}}}));function Ke(e){let{children:o,...t}=e,{classes:r}=md();return cd.createElement(ud,{className:r.root,...t},o)}import{createStyles as pd,Paper as xd,useComponentDefaultProps as Id}from"@mantine/core";import gd from"react";var hd=pd((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%"}}})),Cd={shadow:"xs",radius:"md",withBorder:!0};function ko(e){let{className:o,children:t,width:r,fill:a,unstyled:n,...f}=Id("Panel",Cd,e),{classes:s,cx:l}=hd({width:r,fill:a},{name:"Panel",unstyled:n});return gd.createElement(xd,{className:l(s.paper,o),...f},t)}function Pt(e){let{children:o,...t}=e;return jn.createElement(Ke,null,jn.createElement(ko,{...t},o))}import{Anchor as Zn,Button as yd,Center as vd,Group as Sd,Stack as bd,Text as Pd,TextInput as Dd,Title as Td}from"@mantine/core";import{normalizeOperationOutcome as kd}from"@medplum/core";import ke,{useState as Bd}from"react";import no from"react";function je(e){return no.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 491 491",style:{width:e.size,height:e.size}},no.createElement("title",null,"Medplum Logo"),no.createElement("path",{fill:e.fill??"#ad7136",d:"M282 67c6-16 16-29 29-40L289 0c-22 17-37 41-43 68l17 23 19-24z"}),no.createElement("path",{fill:e.fill??"#946af9",d:"M311 63c-17 0-33 4-48 11-16-7-32-11-49-11-87 0-158 96-158 214s71 214 158 214c17 0 33-4 49-11 15 7 31 11 48 11 87 0 158-96 158-214S398 63 311 63z"}),no.createElement("path",{fill:e.fill??"#7857c5",d:"M231 489l-17 2c-87 0-158-96-158-214S127 63 214 63l17 1c-39 12-70 102-70 213s31 201 70 212z"}),no.createElement("path",{fill:e.fill??"#40bc26",d:"M207 220a176 176 0 01-177 43A176 176 0 01251 43l1 5c17 59 2 125-45 172z"}),no.createElement("path",{fill:e.fill??"#33961e",d:"M252 48A421 421 0 0057 270l-27-7A176 176 0 01251 43l1 5z"}))}function pe(e,o){return e?.issue?.filter(t=>_n(t.expression?.[0],o))?.map(t=>t.details?.text)?.join(`
65
- `)}function Dt(e,o){return e?.issue?.filter(t=>_n(t.expression?.[0],o))}function _n(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 Tt(e){let o=P(),[t,r]=Bd();return ke.createElement($,{style:{maxWidth:400},onSubmit:async a=>{try{e.handleAuthResponse(await o.startNewProject({login:e.login,projectName:a.projectName}))}catch(n){r(kd(n))}}},ke.createElement(vd,{sx:{flexDirection:"column"}},ke.createElement(je,{size:32}),ke.createElement(Td,null,"Create project")),ke.createElement(bd,{spacing:"xl"},ke.createElement(Dd,{name:"projectName",label:"Project Name",placeholder:"My Project",required:!0,autoFocus:!0,error:pe(t,"firstName")}),ke.createElement(Pd,{color:"dimmed",size:"xs"},"By clicking submit you agree to the Medplum"," ",ke.createElement(Zn,{href:"https://www.medplum.com/privacy"},"Privacy\xA0Policy")," and ",ke.createElement(Zn,{href:"https://www.medplum.com/terms"},"Terms\xA0of\xA0Service"),".")),ke.createElement(Sd,{position:"right",mt:"xl",noWrap:!0},ke.createElement(yd,{type:"submit"},"Create project")))}import{Anchor as Ft,Button as Ed,Center as Ld,Checkbox as Rd,Divider as Nd,Group as of,PasswordInput as Hd,Stack as Vd,Text as tf,TextInput as fa}from"@mantine/core";import{normalizeOperationOutcome as rf}from"@medplum/core";import _,{useEffect as qd,useState as Gd}from"react";import Ad,{useEffect as Fd,useRef as Md,useState as aa}from"react";function kt(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 Bt(e){let o=P(),{googleClientId:t,handleGoogleCredential:r}=e,a=Md(null),[n,f]=aa(typeof google<"u"),[s,l]=aa(!1),[i,u]=aa(!1);return Fd(()=>{if(typeof google>"u"){kt("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?Ad.createElement("div",{ref:a}):null}function At(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__"}}import{Alert as wd}from"@mantine/core";import{operationOutcomeIssueToString as Od}from"@medplum/core";import na from"react";function Bo(e){let o=e.outcome?.issue||e.issues;return!o||o.length===0?null:na.createElement(wd,{icon:na.createElement(ro,{size:16}),color:"red"},o.map(t=>na.createElement("div",{"data-testid":"text-field-error",key:t.details?.text},Od(t))))}function Yn(e){typeof grecaptcha>"u"&&kt("https://www.google.com/recaptcha/api.js?render="+e)}function ef(e){return new Promise((o,t)=>{grecaptcha.ready(async()=>{try{o(await grecaptcha.execute(e,{action:"submit"}))}catch(r){t(r)}})})}function af(e){let o=At(e.googleClientId),t=e.recaptchaSiteKey,r=P(),[a,n]=Gd(),f=Dt(a,void 0);return qd(()=>{t&&Yn(t)},[t]),_.createElement($,{style:{maxWidth:400},onSubmit:async s=>{try{let l="";t&&(l=await ef(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(rf(l))}}},_.createElement(Ld,{sx:{flexDirection:"column"}},e.children),_.createElement(Bo,{issues:f}),o&&_.createElement(_.Fragment,null,_.createElement(of,{position:"center",p:"xl",style:{height:70}},_.createElement(Bt,{googleClientId:o,handleGoogleCredential:async s=>{try{e.handleAuthResponse(await r.startGoogleLogin({googleClientId:s.clientId,googleCredential:s.credential,createUser:!0}))}catch(l){n(rf(l))}}})),_.createElement(Nd,{label:"or",labelPosition:"center",my:"lg"})),_.createElement(Vd,{spacing:"xl"},_.createElement(fa,{name:"firstName",type:"text",label:"First name",placeholder:"First name",required:!0,autoFocus:!0,error:pe(a,"firstName")}),_.createElement(fa,{name:"lastName",type:"text",label:"Last name",placeholder:"Last name",required:!0,error:pe(a,"lastName")}),_.createElement(fa,{name:"email",type:"email",label:"Email",placeholder:"name@domain.com",required:!0,error:pe(a,"email")}),_.createElement(Hd,{name:"password",label:"Password",autoComplete:"off",required:!0,error:pe(a,"password")}),_.createElement(tf,{color:"dimmed",size:"xs"},"By clicking submit you agree to the Medplum"," ",_.createElement(Ft,{href:"https://www.medplum.com/privacy"},"Privacy\xA0Policy")," and ",_.createElement(Ft,{href:"https://www.medplum.com/terms"},"Terms\xA0of\xA0Service"),"."),_.createElement(tf,{color:"dimmed",size:"xs"},"This site is protected by reCAPTCHA and the Google"," ",_.createElement(Ft,{href:"https://policies.google.com/privacy"},"Privacy\xA0Policy")," and ",_.createElement(Ft,{href:"https://policies.google.com/terms"},"Terms\xA0of\xA0Service")," apply.")),_.createElement(of,{position:"apart",mt:"xl",noWrap:!0},_.createElement(Rd,{name:"remember",label:"Remember me",size:"xs"}),_.createElement(Ed,{type:"submit"},"Create account")))}function xD(e){let{type:o,projectId:t,clientId:r,googleClientId:a,recaptchaSiteKey:n,onSuccess:f}=e,s=P(),[l,i]=nf(),[u,d]=nf();Qd(()=>{o==="patient"&&l&&s.startNewPatient({login:l,projectId:t}).then(x=>s.processCode(x.code)).then(()=>f()).catch(x=>d(Ud(x)))},[s,o,t,l,f]);function c(x){x.code?s.processCode(x.code).then(()=>f()).catch(console.log):x.login&&i(x.login)}return Mt.createElement(Pt,{width:450},u&&Mt.createElement("pre",null,JSON.stringify(u,null,2)),!l&&Mt.createElement(af,{projectId:t,clientId:r,googleClientId:a,recaptchaSiteKey:n,handleAuthResponse:c},e.children),l&&o==="project"&&Mt.createElement(Tt,{login:l,handleAuthResponse:c}))}import{showNotification as hf}from"@mantine/notifications";import{normalizeErrorString as Cf}from"@medplum/core";import fo,{useCallback as sa,useEffect as Cc,useState as ia}from"react";import{Anchor as ff,Button as lf,Center as sf,Checkbox as zd,Divider as Wd,Group as la,PasswordInput as Xd,Stack as Jd,TextInput as $d}from"@mantine/core";import{normalizeOperationOutcome as Kd}from"@medplum/core";import K,{useCallback as wt,useState as uf}from"react";function df(e){let[o,t]=uf();return o?K.createElement(_d,{email:o,...e}):K.createElement(jd,{setEmail:t,...e})}function jd(e){let{setEmail:o,onRegister:t,handleAuthResponse:r,children:a,disableEmailAuth:n,...f}=e,s=P(),l=!e.disableGoogleAuth&&At(e.googleClientId),i=wt(async c=>{if(!c.authorizeUrl)return!1;let x=JSON.stringify({...await s.ensureCodeChallenge(f),domain:c.domain}),y=new URL(c.authorizeUrl);return y.searchParams.set("state",x),window.location.assign(y.toString()),!0},[s,f]),u=wt(async c=>{let x=await s.post("auth/method",{email:c.email});await i(x)||o(c.email)},[s,i,o]),d=wt(async c=>{let x=await s.startGoogleLogin({...f,googleCredential:c.credential});await i(x)||r(x)},[s,f,i,r]);return K.createElement($,{style:{maxWidth:400},onSubmit:u},K.createElement(sf,{sx:{flexDirection:"column"}},a),l&&K.createElement(K.Fragment,null,K.createElement(la,{position:"center",p:"xl",style:{height:70}},K.createElement(Bt,{googleClientId:l,handleGoogleCredential:d})),!n&&K.createElement(Wd,{label:"or",labelPosition:"center",my:"lg"})),!n&&K.createElement($d,{name:"email",type:"email",label:"Email",placeholder:"name@domain.com",required:!0,autoFocus:!0}),K.createElement(la,{position:"apart",mt:"xl",spacing:0,noWrap:!0},K.createElement("div",null,t&&K.createElement(ff,{component:"button",type:"button",color:"dimmed",onClick:t,size:"xs"},"Register")),!n&&K.createElement(lf,{type:"submit"},"Next")))}function _d(e){let{onForgotPassword:o,handleAuthResponse:t,children:r,...a}=e,n=P(),[f,s]=uf(),l=Dt(f,void 0),i=wt(u=>{n.startLogin({...a,password:u.password,remember:u.remember==="on"}).then(t).catch(d=>s(Kd(d)))},[n,a,t]);return K.createElement($,{style:{maxWidth:400},onSubmit:i},K.createElement(sf,{sx:{flexDirection:"column"}},r),K.createElement(Bo,{issues:l}),K.createElement(Jd,{spacing:"xl"},K.createElement(Xd,{name:"password",label:"Password",autoComplete:"off",required:!0,autoFocus:!0,error:pe(f,"password")})),K.createElement(la,{position:"apart",mt:"xl",spacing:0,noWrap:!0},o&&K.createElement(ff,{component:"button",type:"button",color:"dimmed",onClick:o,size:"xs"},"Forgot password"),K.createElement(zd,{id:"remember",name:"remember",label:"Remember me",size:"xs",sx:{lineHeight:1}}),K.createElement(lf,{type:"submit"},"Sign in")))}import{Avatar as Zd,Center as Yd,Group as ec,Stack as oc,Text as cf,Title as tc,UnstyledButton as rc}from"@mantine/core";import{normalizeOperationOutcome as ac}from"@medplum/core";import Be,{useState as nc}from"react";function mf(e){let o=P(),[t,r]=nc();return Be.createElement(oc,null,Be.createElement(Yd,{sx:{flexDirection:"column"}},Be.createElement(je,{size:32}),Be.createElement(tc,{order:3},"Choose profile")),Be.createElement(Bo,{outcome:t}),e.memberships.map(a=>Be.createElement(rc,{key:a.id,onClick:()=>{o.post("auth/profile",{login:e.login,profile:a.id}).then(e.handleAuthResponse).catch(n=>r(ac(n)))}},Be.createElement(ec,null,Be.createElement(Zd,{radius:"xl"}),Be.createElement("div",{style:{flex:1}},Be.createElement(cf,{size:"sm",weight:500},a.profile?.display),Be.createElement(cf,{color:"dimmed",size:"xs"},a.project?.display))))))}import{Button as fc,Center as lc,Checkbox as sc,Group as ic,Stack as pf,Title as uc}from"@mantine/core";import Ve from"react";function xf(e){let o=P();return Ve.createElement($,{style:{maxWidth:400},onSubmit:t=>{o.post("auth/scope",{login:e.login,scope:Object.keys(t).join(" ")}).then(e.handleAuthResponse).catch(console.log)}},Ve.createElement(pf,null,Ve.createElement(lc,{sx:{flexDirection:"column"}},Ve.createElement(je,{size:32}),Ve.createElement(uc,null,"Choose scope")),Ve.createElement(pf,null,(e.scope??"openid").split(" ").map(t=>Ve.createElement(sc,{key:t,id:t,name:t,label:t,defaultChecked:!0}))),Ve.createElement(ic,{position:"right",mt:"xl"},Ve.createElement(fc,{type:"submit"},"Set scope"))))}import{Alert as dc,Button as cc,Center as mc,Group as pc,Stack as If,TextInput as xc,Title as Ic}from"@mantine/core";import{normalizeErrorString as gc}from"@medplum/core";import Ae,{useState as hc}from"react";function gf(e){let o=P(),[t,r]=hc();return Ae.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(gc(n)))}},Ae.createElement(If,null,Ae.createElement(mc,{sx:{flexDirection:"column"}},Ae.createElement(je,{size:32}),Ae.createElement(Ic,null,"Enter MFA code")),t&&Ae.createElement(dc,{icon:Ae.createElement(ro,{size:16}),title:"Error",color:"red"},t),Ae.createElement(If,null,Ae.createElement(xc,{name:"token",label:"MFA code",required:!0})),Ae.createElement(pc,{position:"right",mt:"xl"},Ae.createElement(cc,{type:"submit"},"Submit code"))))}function cT(e){let{login:o,chooseScopes:t,onSuccess:r,onForgotPassword:a,onRegister:n,onCode:f,...s}=e,l=P(),[i,u]=ia(),[d,c]=ia(!1),[x,y]=ia(),k=sa(A=>{f?f(A):l.processCode(A).then(()=>{r&&r()}).catch(I=>hf({color:"red",message:Cf(I)}))},[l,f,r]),T=sa(A=>{c(!!A.mfaRequired),A.login&&u(A.login),A.memberships&&y(A.memberships),A.code&&(t?y(void 0):k(A.code))},[t,k]),B=sa(A=>{k(A.code)},[k]);return Cc(()=>{o&&!i&&l.get("auth/login/"+o).then(T).catch(A=>hf({color:"red",message:Cf(A)}))},[l,o,i,T]),fo.createElement(Pt,{width:450},(()=>i?d?fo.createElement(gf,{login:i,handleAuthResponse:T}):x?fo.createElement(mf,{login:i,memberships:x,handleAuthResponse:T}):e.projectId==="new"?fo.createElement(Tt,{login:i,handleAuthResponse:T}):e.chooseScopes?fo.createElement(xf,{login:i,scope:e.scope,handleAuthResponse:B}):fo.createElement("div",null,"Success"):fo.createElement(df,{onForgotPassword:a,onRegister:n,handleAuthResponse:T,disableGoogleAuth:e.disableGoogleAuth,disableEmailAuth:e.disableEmailAuth,...s},e.children))())}import{getPropertyDisplayName as Nc,tryGetDataType as Hc}from"@medplum/core";import Yo from"react";var Ot=["meta","implicitRules","language","text","contained","extension","modifierExtension"];import{createStyles as yc}from"@mantine/core";import jo from"react";var vc=yc(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 yf(e){let{children:o,compact:t}=e,{classes:r,cx:a}=vc();return jo.createElement("dl",{className:a(r.root,{[r.compact]:t})},o)}function vf(e){return jo.createElement(jo.Fragment,null,jo.createElement("dt",null,e.term),jo.createElement("dd",null,e.children))}import{ActionIcon as Ac,Box as Fc,CopyButton as Mc,Tooltip as wc}from"@mantine/core";import{formatDateTime as Oc,formatPeriod as Ec,formatTiming as Lc,PropertyType as H}from"@medplum/core";import E from"react";import{formatCodeableConcept as Sc}from"@medplum/core";import Sf from"react";function Ao(e){return Sf.createElement(Sf.Fragment,null,Sc(e.value))}import{formatCoding as bc}from"@medplum/core";import bf from"react";function Pf(e){return bf.createElement(bf.Fragment,null,bc(e.value))}import ua from"react";import Df from"react";function Et(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("]")),Df.createElement(Df.Fragment,null,t.join("").trim())}function Tf(e){let o=e.value;return o?ua.createElement(ua.Fragment,null,o.name,o.name&&": ",o.telecom?.map(t=>ua.createElement(Et,{key:`telecom-${o.name}-${t.value}`,value:t}))):null}import Pc from"react";function kf(e){return Pc.createElement("div",null,e.value?.system,": ",e.value?.value)}import{formatMoney as Dc}from"@medplum/core";import Bf from"react";function Af(e){return Bf.createElement(Bf.Fragment,null,Dc(e.value))}import{formatQuantity as Tc}from"@medplum/core";import Ff from"react";function _o(e){return Ff.createElement(Ff.Fragment,null,Tc(e.value))}import{formatRange as kc}from"@medplum/core";import Mf from"react";function Lt(e){return Mf.createElement(Mf.Fragment,null,kc(e.value))}import Rt from"react";function wf(e){let o=e.value;return o?Rt.createElement(Rt.Fragment,null,Rt.createElement(_o,{value:o.numerator}),"\xA0/\xA0",Rt.createElement(_o,{value:o.denominator})):null}import{stringify as Bc}from"@medplum/core";import da from"react";function lo(e){if(!e.value)return null;let o=e.value.display||e.value.reference||Bc(e.value);return e.link!==!1&&e.value.reference?da.createElement(se,{to:e.value},o):da.createElement(da.Fragment,null,o)}import Fo from"react";function Of(e){let{property:o,values:t}=e,r=o.type[0].code;return e.values?Fo.createElement(Fo.Fragment,null,t.map((a,n)=>Fo.createElement("div",{key:`${n}-${t.length}`},Fo.createElement(xe,{arrayElement:!0,property:o,propertyType:r,value:a,ignoreMissingValues:e.ignoreMissingValues,link:e.link})))):Fo.createElement(Fo.Fragment,null)}function xe(e){let{property:o,propertyType:t,value:r}=e;if(o?.path?.endsWith(".id"))return E.createElement(Fc,{component:"div",sx:{display:"flex",gap:3,alignItems:"center"}},r,E.createElement(Mc,{value:r,timeout:2e3},({copied:n,copy:f})=>E.createElement(wc,{label:n?"Copied":"Copy",withArrow:!0,position:"right"},E.createElement(Ac,{color:n?"teal":"gray",onClick:f},n?E.createElement(zo,{size:"1rem"}):E.createElement(Or,{size:"1rem"})))));if(o?.max&&o.max>1&&!e.arrayElement)return t===H.Attachment?E.createElement(Xn,{values:r,maxWidth:e.maxWidth}):E.createElement(Of,{property:o,values:r,ignoreMissingValues:e.ignoreMissingValues,link:e.link});switch(t){case H.boolean:return E.createElement(E.Fragment,null,r===void 0?"":(!!r).toString());case H.SystemString:case H.string:return E.createElement("div",{style:{whiteSpace:"pre-wrap"}},r);case H.code:case H.date:case H.decimal:case H.integer:case H.positiveInt:case H.unsignedInt:case H.uri:case H.url:return E.createElement(E.Fragment,null,r);case H.canonical:return E.createElement(lo,{value:{reference:r},link:e.link});case H.dateTime:case H.instant:return E.createElement(E.Fragment,null,Oc(r));case H.markdown:return E.createElement("pre",null,r);case H.Address:return E.createElement(xn,{value:r});case H.Annotation:return E.createElement(E.Fragment,null,r?.text);case H.Attachment:return E.createElement(Oe,{value:r,maxWidth:e.maxWidth});case H.CodeableConcept:return E.createElement(Ao,{value:r});case H.Coding:return E.createElement(Pf,{value:r});case H.ContactDetail:return E.createElement(Tf,{value:r});case H.ContactPoint:return E.createElement(Et,{value:r});case H.HumanName:return E.createElement(Ct,{value:r});case H.Identifier:return E.createElement(kf,{value:r});case H.Money:return E.createElement(Af,{value:r});case H.Period:return E.createElement(E.Fragment,null,Ec(r));case H.Quantity:case H.Duration:return E.createElement(_o,{value:r});case H.Range:return E.createElement(Lt,{value:r});case H.Ratio:return E.createElement(wf,{value:r});case H.Reference:return E.createElement(lo,{value:r,link:e.link});case H.Timing:return E.createElement(E.Fragment,null,Lc(r));case H.Dosage:case H.UsageContext:return E.createElement(Zo,{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 E.createElement(Zo,{value:{type:o.type[0].code,value:r},compact:!0,ignoreMissingValues:e.ignoreMissingValues})}}import{getTypedPropertyValue as Rc}from"@medplum/core";function ve(e,o){let t=Rc(e,o);return t?Array.isArray(t)?[t.map(r=>r.value),t[0].type]:[t.value,t.type]:[void 0,"undefined"]}function Zo(e){let o=e.value,t=o.value;if(!t)return null;let r=o.type,a=Hc(r);return a?typeof t=="object"&&"name"in t&&Object.keys(t).length===1&&typeof t.name=="string"?Yo.createElement("div",null,t.name):Yo.createElement(yf,{compact:e.compact},Object.entries(a.elements).map(n=>{let[f,s]=n;if(Ot.includes(f))return null;let[l,i]=ve(o,f);return e.ignoreMissingValues&&(!l||Array.isArray(l)&&l.length===0)?null:Yo.createElement(vf,{key:f,term:Nc(f)},Yo.createElement(xe,{property:s,propertyType:i,value:l,ignoreMissingValues:e.ignoreMissingValues,link:e.link}))})):Yo.createElement("div",null,r,"\xA0not implemented")}import{Stack as up}from"@mantine/core";import{getPropertyDisplayName as fl,tryGetDataType as dp}from"@medplum/core";import Oo,{useState as cp}from"react";import{Group as Vc,Input as qc}from"@mantine/core";import Nt from"react";function Ht(e){return Nt.createElement(Vc,{noWrap:!0},Nt.createElement("div",null,e.children),Nt.createElement("div",null,Nt.createElement(qc.Wrapper,{id:e.htmlFor,label:e.title,description:e.description,withAsterisk:e.withAsterisk},(()=>null)())))}import{Input as Gc}from"@mantine/core";import Uc from"react";function Se(e){return Uc.createElement(Gc.Wrapper,{id:e.htmlFor,label:e.title,description:e.description,withAsterisk:e.withAsterisk,error:pe(e.outcome,e.htmlFor)},e.children)}import{capitalize as Qc}from"@medplum/core";function et(e,o,t,r,a){let n=r.type;if(n.length>1)for(let f of n){let s=o.replace("[x]",Qc(f.code));s in e&&delete e[s]}return e[t]=a,e}import{Checkbox as tp,Group as rp,NativeSelect as ap,Textarea as np,TextInput as ya}from"@mantine/core";import{capitalize as fp,PropertyType as L}from"@medplum/core";import G,{useState as lp}from"react";import zc,{useState as Wc}from"react";function Ef(e){let[o,t]=Wc(e.defaultValue);function r(a){let n=Jc(a);t(n),e.onChange&&e.onChange(n)}return zc.createElement(bo,{binding:e.binding,name:e.name,placeholder:e.placeholder,defaultValue:o&&Xc(o),maxSelectedValues:1,onChange:r})}function Xc(e){return e.coding?.map(o=>({system:o.system,code:o.code,display:o.display}))}function Jc(e){if(e.length!==0)return{coding:e.map(o=>({system:o.system,code:o.code,display:o.display}))}}import $c,{useState as Kc}from"react";function Vt(e){let[o,t]=Kc(e.defaultValue);function r(a){let n=a[0],f=n&&_c(n);t(f),e.onChange&&e.onChange(f)}return $c.createElement(bo,{binding:e.binding,name:e.name,placeholder:e.placeholder,defaultValue:o&&jc(o),maxSelectedValues:1,onChange:r})}function jc(e){return{system:e.system,code:e.code,display:e.display}}function _c(e){return{system:e.system,code:e.code,display:e.display}}import{Group as tm,TextInput as rm}from"@mantine/core";import ca,{useRef as am,useState as nm}from"react";import{Group as Zc,NativeSelect as Lf,TextInput as Yc}from"@mantine/core";import qt,{useRef as em,useState as om}from"react";function Gt(e){let[o,t]=om(e.defaultValue),r=em();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 qt.createElement(Zc,{spacing:"xs",grow:!0,noWrap:!0},qt.createElement(Lf,{"data-testid":"system",defaultValue:o?.system,onChange:l=>n(l.currentTarget.value),data:["","email","phone","fax","pager","sms","other"]}),qt.createElement(Lf,{"data-testid":"use",defaultValue:o?.use,onChange:l=>f(l.currentTarget.value),data:["","home","work","temp","old","mobile"]}),qt.createElement(Yc,{placeholder:"Value",defaultValue:o?.value,onChange:l=>s(l.currentTarget.value)}))}function Rf(e){let[o,t]=nm(e.defaultValue),r=am();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 ca.createElement(tm,{spacing:"xs",grow:!0,noWrap:!0},ca.createElement(rm,{"data-testid":e.name+"-name",name:e.name+"-name",placeholder:"Name",style:{width:180},defaultValue:o?.name,onChange:s=>n(s.currentTarget.value)}),ca.createElement(Gt,{name:e.name+"-telecom",defaultValue:o?.telecom?.[0],onChange:f}))}import{TextInput as fm}from"@mantine/core";import lm from"react";import{isValidDate as Nf}from"@medplum/core";function Hf(e){if(!e)return"";let o=new Date(e);return Nf(o)?o.toLocaleDateString("sv")+"T"+o.toLocaleTimeString("sv"):""}function Vf(e){if(!e)return"";let o=new Date(e);return Nf(o)?o.toISOString():""}function Fe(e){return lm.createElement(fm,{id:e.name,name:e.name,"data-autofocus":e.autoFocus,"data-testid":e.name,placeholder:e.placeholder,required:e.required,type:sm(),defaultValue:Hf(e.defaultValue),autoFocus:e.autoFocus,error:pe(e.outcome,e.name),onChange:o=>{if(e.onChange){let t=o.currentTarget.value;e.onChange(Vf(t))}}})}function sm(){return"datetime-local"}import{JsonInput as im}from"@mantine/core";import{stringify as um}from"@medplum/core";import dm from"react";function qf(e){return dm.createElement(im,{id:e.name,name:e.name,"data-testid":"extension-input",defaultValue:um(e.defaultValue),deserialize:JSON.parse,onChange:o=>{e.onChange&&e.onChange(JSON.parse(o))}})}import{Group as cm,NativeSelect as mm,TextInput as Ut}from"@mantine/core";import Mo,{useRef as pm,useState as xm}from"react";function Gf(e){let[o,t]=xm(e.defaultValue),r=pm();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 Mo.createElement(cm,{spacing:"xs",grow:!0,noWrap:!0},Mo.createElement(mm,{defaultValue:o?.use,name:e.name+"-use","data-testid":"use",onChange:u=>n(u.currentTarget.value),data:["","temp","old","usual","official","nickname","anonymous","maiden"]}),Mo.createElement(Ut,{placeholder:"Prefix",name:e.name+"-prefix",defaultValue:o?.prefix?.join(" "),onChange:u=>f(u.currentTarget.value)}),Mo.createElement(Ut,{placeholder:"Given",name:e.name+"-given",defaultValue:o?.given?.join(" "),onChange:u=>s(u.currentTarget.value)}),Mo.createElement(Ut,{name:e.name+"-family",placeholder:"Family",defaultValue:o?.family,onChange:u=>l(u.currentTarget.value)}),Mo.createElement(Ut,{placeholder:"Suffix",name:e.name+"-suffix",defaultValue:o?.suffix?.join(" "),onChange:u=>i(u.currentTarget.value)}))}import{Group as Im,TextInput as Uf}from"@mantine/core";import ma,{useState as gm}from"react";function Qf(e){let[o,t]=gm(e.defaultValue);function r(a){t(a),e.onChange&&e.onChange(a)}return ma.createElement(Im,{spacing:"xs",grow:!0,noWrap:!0},ma.createElement(Uf,{placeholder:"System",defaultValue:o?.system,onChange:a=>r({...o,system:a.currentTarget.value})}),ma.createElement(Uf,{placeholder:"Value",defaultValue:o?.value,onChange:a=>r({...o,value:a.currentTarget.value})}))}import{NativeSelect as hm,TextInput as Cm}from"@mantine/core";import pa,{useCallback as xa,useState as ym}from"react";var vm=["USD","EUR","CAD","GBP","AUD"];function zf(e){let{onChange:o}=e,[t,r]=ym(e.defaultValue),a=xa(l=>{r(l),o&&o(l)},[o]),n=xa(l=>{a({...t,currency:l.currentTarget.value})},[t,a]),f=xa(l=>{a({...t,value:l.currentTarget.valueAsNumber})},[t,a]),s=pa.createElement(hm,{defaultValue:t?.currency,data:vm,styles:{input:{fontWeight:500,borderTopLeftRadius:0,borderBottomLeftRadius:0,width:92}},onChange:n});return pa.createElement(Cm,{type:"number",label:e.label,placeholder:e.placeholder??"Value",defaultValue:t?.value?.toString()??"USD",icon:pa.createElement(Er,{size:14}),rightSection:s,rightSectionWidth:92,onChange:f})}import{Group as Sm}from"@mantine/core";import Ia,{useState as bm}from"react";function Wf(e){let[o,t]=bm(e.defaultValue);function r(a){t(a),e.onChange&&e.onChange(a)}return Ia.createElement(Sm,{spacing:"xs",grow:!0,noWrap:!0},Ia.createElement(Fe,{name:e.name+".start",placeholder:"Start",defaultValue:o?.start,onChange:a=>r({...o,start:a})}),Ia.createElement(Fe,{name:e.name+".end",placeholder:"End",defaultValue:o?.end,onChange:a=>r({...o,end:a})}))}import{Group as Pm,NativeSelect as Dm,TextInput as Xf}from"@mantine/core";import Qt,{useState as Tm}from"react";function Pe(e){let[o,t]=Tm(e.defaultValue);function r(a){t(a),e.onChange&&e.onChange(a)}return Qt.createElement(Pm,{spacing:"xs",grow:!0,noWrap:!0},Qt.createElement(Dm,{style:{width:80},"data-testid":e.name+"-comparator",defaultValue:o?.comparator,data:["","<","<=",">=",">"],onChange:a=>r({...o,comparator:a.currentTarget.value})}),Qt.createElement(Xf,{id:e.name,name:e.name,required:e.required,"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:km(a.currentTarget.value)})}}),Qt.createElement(Xf,{placeholder:"Unit","data-testid":e.name+"-unit",defaultValue:o?.unit,onChange:a=>r({...o,unit:a.currentTarget.value})}))}function km(e){if(e)return parseFloat(e)}import{Group as Bm}from"@mantine/core";import ga,{useState as Am}from"react";function ot(e){let[o,t]=Am(e.defaultValue);function r(a){t(a),e.onChange&&e.onChange(a)}return ga.createElement(Bm,{spacing:"xs",grow:!0,noWrap:!0},ga.createElement(Pe,{name:e.name+"-low",defaultValue:o?.low,onChange:a=>r({...o,low:a})}),ga.createElement(Pe,{name:e.name+"-high",defaultValue:o?.high,onChange:a=>r({...o,high:a})}))}import{Group as Fm}from"@mantine/core";import ha,{useState as Mm}from"react";function Jf(e){let[o,t]=Mm(e.defaultValue);function r(a){t(a),e.onChange&&e.onChange(a)}return ha.createElement(Fm,{spacing:"xs",grow:!0,noWrap:!0},ha.createElement(Pe,{name:e.name+"-numerator",defaultValue:o?.numerator,onChange:a=>r({...o,numerator:a})}),ha.createElement(Pe,{name:e.name+"-denominator",defaultValue:o?.denominator,onChange:a=>r({...o,denominator:a})}))}import{Group as Gm,NativeSelect as Um}from"@mantine/core";import{createReference as Qm}from"@medplum/core";import Wt,{useState as _f}from"react";import{Group as wm,Text as $f}from"@mantine/core";import{getDisplayString as Om,getReferenceString as jf}from"@medplum/core";import so,{forwardRef as Em,useCallback as Kf,useState as Lm}from"react";var Rm={Observation:"code",User:"email:contains"},Nm=["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 Hm(e){return{value:jf(e),label:Om(e),resource:e}}function zt(e){let o=P(),t=e.resourceType,[r,a]=Lm(),n=X(e.defaultValue,a),f=e.onChange,s=Kf(async(i,u)=>{let d=qm(t),c=new URLSearchParams({[d]:i,_count:"10"});return await o.searchResources(t,c,{signal:u})},[o,t]),l=Kf(i=>{f&&f(i[0])},[f]);return e.defaultValue&&!r&&!n?null:so.createElement(So,{name:e.name,required:e.required,itemComponent:Vm,defaultValue:n,placeholder:e.placeholder,maxSelectedValues:1,toKey:jf,toOption:Hm,loadOptions:s,onChange:l,clearable:!0})}var Vm=Em(({label:e,resource:o,...t},r)=>so.createElement("div",{ref:r,...t},so.createElement(wm,{noWrap:!0},so.createElement(he,{value:o}),so.createElement("div",null,so.createElement($f,null,e),so.createElement($f,{size:"xs",color:"dimmed"},o.birthDate)))));function qm(e){return Rm[e]??(Nm.includes(e)?"name":"_id")}function wo(e){let o=zm(e.targetTypes),t=Wm(e.defaultValue,o),[r,a]=_f(e.defaultValue),[n,f]=_f(t);function s(l){a(l),e.onChange&&e.onChange(l)}return Wt.createElement(Gm,{spacing:"xs",grow:!0,noWrap:!0},o&&o.length>1&&Wt.createElement(Um,{"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&&Wt.createElement(Po,{autoFocus:e.autoFocus,testId:"reference-input-resource-type-input",defaultValue:n,onChange:f,name:e.name+"-resourceType",placeholder:"Resource Type"}),Wt.createElement(zt,{resourceType:n,name:e.name+"-id",required:e.required,placeholder:e.placeholder,defaultValue:r,onChange:l=>{s(l?Qm(l):void 0)}}))}function zm(e){if(!(!e||e.length===0||e.length===1&&e[0]==="Resource"))return e}function Wm(e,o){let t=e?.reference?.split("/")[0];if(t)return t;if(o&&o.length>0)return o[0]}import{ActionIcon as Zf}from"@mantine/core";import Ie,{useRef as Xm,useState as Jm}from"react";function Yf(e){let[o,t]=Jm(e.defaultValue&&Array.isArray(e.defaultValue)?e.defaultValue:[]),r=Xm();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(qe,{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(Zf,{title:"Remove",size:"sm",onClick:s=>{N(s);let l=[...r.current];l.splice(f,1),a(l)}},Ie.createElement(We,null))))),Ie.createElement("tr",null,Ie.createElement("td",null),Ie.createElement("td",{style:{textAlign:"right"}},Ie.createElement(Zf,{title:"Add",size:"sm",color:"green",onClick:n=>{N(n);let f=[...r.current];f.push(void 0),a(f)}},Ie.createElement(po,null))))))}import{Button as tl,Chip as el,Group as Xt,Modal as $m,NativeSelect as Km,Stack as jm,Switch as _m,TextInput as Zm}from"@mantine/core";import{formatTiming as Ym}from"@medplum/core";import j,{useRef as rl,useState as Ca}from"react";var ep=["sun","mon","tue","wed","thu","fri","sat"];function al(e){let[o,t]=Ca(e.defaultValue),[r,a]=Ca(!1),n=rl();return n.current=o,j.createElement(j.Fragment,null,j.createElement(Xt,{spacing:"xs",grow:!0,noWrap:!0},j.createElement("span",null,Ym(n.current)||"No repeat"),j.createElement(tl,{onClick:()=>a(!0)},"Edit")),j.createElement(op,{visible:r,defaultValue:n.current,onOk:f=>{e.onChange&&e.onChange(f),t(f),a(!1)},onCancel:()=>a(!1)}))}var ol={repeat:{period:1,periodUnit:"d"}};function op(e){let[o,t]=Ca(e.defaultValue||ol),r=rl();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 j.createElement($m,{title:"Timing",closeButtonProps:{"aria-label":"Close"},opened:e.visible,onClose:()=>e.onCancel()},j.createElement(jm,null,j.createElement(Se,{title:"Starts on",htmlFor:"timing-dialog-start"},j.createElement(Fe,{name:"timing-dialog-start",onChange:i=>a(i)})),j.createElement(_m,{label:"Repeat",checked:!!o.repeat,onChange:i=>n(i.currentTarget.checked?ol.repeat:void 0)}),o.repeat&&j.createElement(j.Fragment,null,j.createElement(Se,{title:"Repeat every",htmlFor:"timing-dialog-period"},j.createElement(Xt,{spacing:"xs",grow:!0,noWrap:!0},j.createElement(Zm,{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)}),j.createElement(Km,{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"&&j.createElement(Se,{title:"Repeat on"},j.createElement(el.Group,{multiple:!0,onChange:l},j.createElement(Xt,{position:"apart",mt:"md",spacing:"xs"},ep.map(i=>j.createElement(el,{key:i,value:i,size:"xs",radius:"xl"},i.charAt(0).toUpperCase())))))),j.createElement(Xt,{position:"right"},j.createElement(tl,{onClick:()=>e.onOk(o)},"OK"))))}function qe(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===L.Attachment?G.createElement($n,{name:r,defaultValue:a,onChange:e.onChange}):G.createElement(Yf,{property:o,name:r,defaultValue:a,onChange:e.onChange});let n=o.type;return n.length>1?G.createElement(sp,{elementDefinitionTypes:n,...e}):G.createElement(nl,{elementDefinitionType:n[0],...e})}function sp(e){let o=e.elementDefinitionTypes,t;e.defaultPropertyType&&(t=o.find(n=>n.code===e.defaultPropertyType)),t||(t=o[0]);let[r,a]=lp(t);return G.createElement(rp,{spacing:"xs",grow:!0,noWrap:!0},G.createElement(ap,{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(nl,{...e,elementDefinitionType:r,onChange:n=>{e.onChange&&e.onChange(n,e.name.replace("[x]",fp(r.code)))}}))}function nl(e){let o=e.property,t=e.elementDefinitionType.code,r=e.name,a=e.defaultValue,n=o.min!==void 0&&o.min>0;switch(t){case L.SystemString:case L.canonical:case L.string:case L.time:case L.uri:case L.url:return G.createElement(ya,{id:r,name:r,"data-testid":r,defaultValue:a,required:n,onChange:f=>{e.onChange&&e.onChange(f.currentTarget.value)},error:pe(e.outcome,r)});case L.date:return G.createElement(ya,{type:"date",id:r,name:r,"data-testid":r,defaultValue:a,required:n,onChange:f=>{e.onChange&&e.onChange(f.currentTarget.value)},error:pe(e.outcome,r)});case L.dateTime:case L.instant:return G.createElement(Fe,{name:r,defaultValue:a,onChange:e.onChange,outcome:e.outcome});case L.decimal:case L.integer:case L.positiveInt:case L.unsignedInt:return G.createElement(ya,{type:"number",step:t===L.decimal?"any":"1",id:r,name:r,"data-testid":r,defaultValue:a,required:n,onChange:f=>{e.onChange&&e.onChange(f.currentTarget.valueAsNumber)}});case L.code:return G.createElement(St,{binding:o.binding?.valueSet,name:r,defaultValue:a,onChange:e.onChange});case L.boolean:return G.createElement(tp,{id:r,name:r,"data-testid":r,defaultChecked:!!a,onChange:f=>{e.onChange&&e.onChange(f.currentTarget.checked)}});case L.markdown:return G.createElement(np,{id:r,name:r,"data-testid":r,defaultValue:a,required:n,onChange:f=>{e.onChange&&e.onChange(f.currentTarget.value)}});case L.Address:return G.createElement(Cn,{name:r,defaultValue:a,onChange:e.onChange});case L.Annotation:return G.createElement(yn,{name:r,defaultValue:a,onChange:e.onChange});case L.Attachment:return G.createElement(bt,{name:r,defaultValue:a,onChange:e.onChange});case L.CodeableConcept:return G.createElement(Ef,{binding:o.binding?.valueSet,name:r,defaultValue:a,onChange:e.onChange});case L.Coding:return G.createElement(Vt,{binding:o.binding?.valueSet,name:r,defaultValue:a,onChange:e.onChange});case L.ContactDetail:return G.createElement(Rf,{name:r,defaultValue:a,onChange:e.onChange});case L.ContactPoint:return G.createElement(Gt,{name:r,defaultValue:a,onChange:e.onChange});case L.Extension:return G.createElement(qf,{name:r,defaultValue:a,onChange:e.onChange});case L.HumanName:return G.createElement(Gf,{name:r,defaultValue:a,onChange:e.onChange});case L.Identifier:return G.createElement(Qf,{name:r,defaultValue:a,onChange:e.onChange});case L.Money:return G.createElement(zf,{name:r,defaultValue:a,onChange:e.onChange});case L.Period:return G.createElement(Wf,{name:r,defaultValue:a,onChange:e.onChange});case L.Duration:case L.Quantity:return G.createElement(Pe,{name:r,defaultValue:a,onChange:e.onChange});case L.Range:return G.createElement(ot,{name:r,defaultValue:a,onChange:e.onChange});case L.Ratio:return G.createElement(Jf,{name:r,defaultValue:a,onChange:e.onChange});case L.Reference:return G.createElement(wo,{name:r,defaultValue:a,targetTypes:ip(o),onChange:e.onChange});case L.Timing:return G.createElement(al,{name:r,defaultValue:a,onChange:e.onChange});case L.Dosage:case L.UsageContext:return G.createElement(tt,{typeName:t,defaultValue:a,onChange:e.onChange,outcome:e.outcome});default:return G.createElement(tt,{typeName:o.type[0].code,defaultValue:a,onChange:e.onChange,outcome:e.outcome})}}function ip(e){return e?.type?.[0]?.targetProfile?.map(o=>o.split("/").pop())}function tt(e){let[o,t]=cp(e.defaultValue??{});function r(s){t(s),e.onChange&&e.onChange(s)}let a=e.typeName,n=dp(a);if(!n)return Oo.createElement("div",null,a,"\xA0not implemented");let f={type:a,value:o};return Oo.createElement(up,null,Object.entries(n.elements).map(([s,l])=>{if(s==="id"||Ot.includes(s)||!l.type)return null;let[i,u]=ve(f,s),d=l.min!==void 0&&l.min>0;return l.type.length===1&&l.type[0].code==="boolean"?Oo.createElement(Ht,{key:s,title:fl(s),description:l.description,htmlFor:s},Oo.createElement(qe,{property:l,name:s,defaultValue:i,defaultPropertyType:u,outcome:e.outcome,onChange:(c,x)=>{r(et(o,s,x??s,l,c))}})):Oo.createElement(Se,{key:s,title:fl(s),description:l.description,withAsterisk:d,htmlFor:s,outcome:e.outcome},Oo.createElement(qe,{property:l,name:s,defaultValue:i,defaultPropertyType:u,onChange:(c,x)=>{r(et(o,s,x??s,l,c))}}))}))}import{Button as va,createStyles as mp,Group as sl}from"@mantine/core";import oe,{useMemo as pp,useState as xp}from"react";function ll(e){return e.toLocaleString("default",{month:"long"})+" "+e.getFullYear()}function Jt(){let e=new Date;return e.setDate(1),e.setHours(0,0,0,0),e}var Ip=mp(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 il(e){let{classes:o}=Ip(),{onChangeMonth:t,onClick:r}=e,[a,n]=xp(Jt);function f(l){n(i=>{let u=new Date(i.getTime());return u.setMonth(i.getMonth()+l),t(u),u})}let s=pp(()=>gp(a,e.slots),[a,e.slots]);return oe.createElement("div",null,oe.createElement(sl,{position:"apart",spacing:"xs",grow:!0,noWrap:!0},oe.createElement("p",{style:{flex:1}},ll(a)),oe.createElement(sl,{position:"right",spacing:"xs"},oe.createElement(va,{variant:"outline","aria-label":"Previous month",onClick:()=>f(-1)},"<"),oe.createElement(va,{variant:"outline","aria-label":"Next month",onClick:()=>f(1)},">"))),oe.createElement("table",{className:o.table},oe.createElement("thead",null,oe.createElement("tr",null,oe.createElement("th",null,"SUN"),oe.createElement("th",null,"MON"),oe.createElement("th",null,"TUE"),oe.createElement("th",null,"WED"),oe.createElement("th",null,"THU"),oe.createElement("th",null,"FRI"),oe.createElement("th",null,"SAT"))),oe.createElement("tbody",null,s.map((l,i)=>oe.createElement("tr",{key:"week-"+i},l.map((u,d)=>oe.createElement("td",{key:"day-"+d},u&&oe.createElement(va,{disabled:!u.available,onClick:()=>r(u.date)},u.date.getDate()))))))))}function gp(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:hp(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 hp(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 vx from"react";import{ActionIcon as kl,Center as nx,createStyles as fx,Group as lx,Loader as sx,Menu as Ge,ScrollArea as ix,TextInput as ux}from"@mantine/core";import{showNotification as dx,updateNotification as jt}from"@mantine/notifications";import{getReferenceString as rt,normalizeErrorString as Bl}from"@medplum/core";import D,{useCallback as _t,useEffect as cx,useRef as Al,useState as Fl}from"react";import{createStyles as wp,Group as Kt,List as cl,Stack as ml,Text as De,Title as pl}from"@mantine/core";import{capitalize as Op,formatCodeableConcept as Ep,formatDateTime as Pa,formatObservationValue as Lp,isReference as Rp}from"@medplum/core";import h,{useEffect as Np,useState as Hp}from"react";import{Blockquote as Cp,createStyles as yp,Stack as vp}from"@mantine/core";import ul from"react";var Sp=yp(e=>({noteBody:{fontSize:e.fontSizes.sm},noteCite:{fontSize:e.fontSizes.xs,marginBlockStart:3},noteRoot:{padding:5}}));function Sa({value:e}){let{classes:o}=Sp();return e?ul.createElement(vp,{justify:"flex-start",spacing:"xs"},e.map(t=>t.text&&ul.createElement(Cp,{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 Bp}from"@mantine/core";import ba from"react";import{Text as bp}from"@mantine/core";import{getDisplayString as Pp,isOk as Dp,normalizeErrorString as Tp}from"@medplum/core";import dl,{useState as kp}from"react";function Ee(e){let{value:o,link:t,...r}=e,[a,n]=kp(),f=X(o,n),s;if(a&&!Dp(a))s=`[${Tp(a)}]`;else if(f)s=Pp(f);else return null;return t?dl.createElement(se,{to:o,...r},s):dl.createElement(bp,{component:"span",...r},s)}function _e(e){return ba.createElement(Bp,{spacing:"xs"},ba.createElement(he,{size:24,radius:12,value:e.value,link:e.link}),ba.createElement(Ee,{value:e.value,link:e.link}))}import{Badge as Ap}from"@mantine/core";import Fp from"react";var Mp={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 $t(e){return Fp.createElement(Ap,{color:Mp[e.status]},e.status)}var xl=wp(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}}));Da.defaultProps={hideObservationNotes:!1,hideSpecimenInfo:!1};function Da(e){let o=P(),t=X(e.value),[r,a]=Hp();if(Np(()=>{t?.specimen&&Promise.allSettled(t.specimen.map(f=>o.readReference(f))).then(f=>f.filter(s=>s.status==="fulfilled").map(s=>s.value)).then(a).catch(console.error)},[o,t]),!t)return null;let n=r?.flatMap(f=>f.note||[])||[];if(t.presentedForm&&t.presentedForm.length>0){let f=t.presentedForm[0];f.contentType?.startsWith("text/plain")&&f.data&&n.push({text:window.atob(f.data)})}return h.createElement(ml,null,h.createElement(pl,null,"Diagnostic Report"),h.createElement(Vp,{value:t}),r&&!e.hideSpecimenInfo&&qp(r),t.result&&h.createElement(Gp,{hideObservationNotes:e.hideObservationNotes,value:t.result}),n.length>0&&h.createElement(Sa,{value:n}))}function Vp({value:e}){return h.createElement(Kt,{mt:"md",spacing:30},e.subject&&h.createElement("div",null,h.createElement(De,{size:"xs",transform:"uppercase",color:"dimmed"},"Subject"),h.createElement(De,null,h.createElement(_e,{value:e.subject,link:!0}))),e.resultsInterpreter?.map(o=>h.createElement("div",{key:o.reference},h.createElement(De,{size:"xs",transform:"uppercase",color:"dimmed"},"Interpreter"),h.createElement(De,null,h.createElement(_e,{value:o,link:!0})))),e.performer?.map(o=>h.createElement("div",{key:o.reference},h.createElement(De,{size:"xs",transform:"uppercase",color:"dimmed"},"Performer"),h.createElement(De,null,h.createElement(_e,{value:o,link:!0})))),e.issued&&h.createElement("div",null,h.createElement(De,{size:"xs",transform:"uppercase",color:"dimmed"},"Issued"),h.createElement(De,null,Pa(e.issued))),e.status&&h.createElement("div",null,h.createElement(De,{size:"xs",transform:"uppercase",color:"dimmed"},"Status"),h.createElement(De,null,Op(e.status))))}function qp(e){return h.createElement(ml,{spacing:"xs"},h.createElement(pl,{order:2,size:"h6"},"Specimens"),h.createElement(cl,{type:"ordered"},e?.map(o=>h.createElement(cl.Item,{ml:"sm",key:`specimen-${o.id}`},h.createElement(Kt,{spacing:20},h.createElement(Kt,{spacing:5},h.createElement(De,{fw:500},"Collected:")," ",Pa(o.collection?.collectedDateTime)),h.createElement(Kt,{spacing:5},h.createElement(De,{fw:500},"Received:")," ",Pa(o.receivedTime)))))))}function Gp(e){let{classes:o}=xl();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(Il,{value:e.value,ancestorIds:e.ancestorIds,hideObservationNotes:e.hideObservationNotes})))}function Il(e){return h.createElement(h.Fragment,null,e.value?.map(o=>h.createElement(Up,{key:`obs-${Rp(o)?o.reference:o.id}`,value:o,ancestorIds:e.ancestorIds,hideObservationNotes:e.hideObservationNotes})))}function Up(e){let{classes:o,cx:t}=xl(),r=X(e.value);if(!r||e.ancestorIds?.includes(r.id))return null;let a=!e.hideObservationNotes&&r.note,n=Wp(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(Ao,{value:r.code}))),h.createElement("td",null,h.createElement(Qp,{value:r})),h.createElement("td",null,h.createElement(zp,{value:r.referenceRange})),h.createElement("td",null,r.interpretation&&r.interpretation.length>0&&h.createElement(Ao,{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-${Ep(f)}`},h.createElement(Ao,{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($t,{status:r.status}))),r.hasMember&&h.createElement(Il,{value:r.hasMember,ancestorIds:e.ancestorIds?[...e.ancestorIds,r.id]:[r.id],hideObservationNotes:e.hideObservationNotes}),a&&h.createElement("tr",null,h.createElement("td",{colSpan:6},h.createElement(Sa,{value:r.note}))))}function Qp(e){let o=e.value;return h.createElement(h.Fragment,null,Lp(o))}function zp(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(Lt,{value:o}):null}function Wp(e){let o=e.interpretation?.[0]?.coding?.[0]?.code;return o==="AA"||o==="LL"||o==="HH"||o==="A"}import{createStyles as Xp}from"@mantine/core";import{getDataType as Jp,getPropertyDisplayName as $p,stringify as gl,toTypedValue as hl}from"@medplum/core";import ue,{useEffect as Kp,useState as jp}from"react";var _p=Xp(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 yl(e){let{classes:o}=_p(),t=P(),[r,a]=jp(!1);if(Kp(()=>{t.requestSchema(e.original.resourceType).then(()=>a(!0)).catch(console.log)},[t,e.original.resourceType]),!r)return null;let n=Jp(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]=ve(hl(e.original),f),[u,d]=ve(hl(e.revised),f);return Cl(l)&&Cl(u)||gl(l)===gl(u)?null:ue.createElement("tr",{key:f},ue.createElement("td",null,$p(f)),ue.createElement("td",{className:o.removed},ue.createElement(xe,{property:s,propertyType:i,value:l,ignoreMissingValues:!0})),ue.createElement("td",{className:o.added},ue.createElement(xe,{property:s,propertyType:d,value:u,ignoreMissingValues:!0})))})))}function Cl(e){return!e||Array.isArray(e)&&e.length===0||typeof e=="object"&&Object.keys(e).length===0}import Zp,{useEffect as Yp,useState as ex}from"react";function Ta(e){let o=P(),t=X(e.value),[r,a]=ex(!1);return Yp(()=>{t&&o.requestSchema(t.resourceType).then(()=>a(!0)).catch(console.log)},[o,t]),!r||!t?null:Zp.createElement(Zo,{value:{type:t.resourceType,value:e.forceUseInput?e.value:t},ignoreMissingValues:e.ignoreMissingValues})}import{ActionIcon as ox,Group as tx,Menu as vl,Text as ka}from"@mantine/core";import{formatDateTime as rx,getReferenceString as ax}from"@medplum/core";import re from"react";function Sl(e){return re.createElement(Ke,null,e.children)}function Ze(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(ko,{"data-testid":"timeline-item",fill:!0,...n},re.createElement(tx,{position:"apart",spacing:8,mx:"xs",my:"sm"},re.createElement(he,{value:f,link:!0,size:"md"}),re.createElement("div",{style:{flex:1}},re.createElement(ka,{size:"sm"},re.createElement(Ee,{color:"dark",weight:500,value:f,link:!0})),re.createElement(ka,{size:"xs"},re.createElement(se,{color:"dimmed",to:e.resource},rx(s)),re.createElement(ka,{component:"span",color:"dimmed",mx:8},"\xB7"),re.createElement(se,{color:"dimmed",to:e.resource},e.resource.resourceType))),a&&re.createElement(vl,{position:"bottom-end",shadow:"md",width:200},re.createElement(vl.Target,null,re.createElement(ox,{radius:"xl","aria-label":`Actions for ${ax(e.resource)}`},re.createElement(Lr,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 Dl(e,o){e.sort((t,r)=>{let a=bl(t,o),n=bl(r,o);return a>n?1:a<n?-1:Pl(t,o)-Pl(r,o)})}function bl(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 Pl(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 mx=fx(e=>({pinnedComment:{backgroundColor:e.colors.blue[0]}}));function Ye(e){let o=P(),t=Qe(),r=o.getProfile(),a=Al(null),n=X(e.value),[f,s]=Fl(),[l,i]=Fl([]),u=e.loadTimelineResources,d=Al(l);d.current=l;let c=_t(C=>{Dl(C,n),C.reverse(),i(C)},[n]),x=_t(C=>{let V=[];for(let we of C){if(we.status!=="fulfilled")continue;let v=we.value;if(v.type==="history"&&s(v),v.entry)for(let z of v.entry)V.push(z.resource)}c(V)},[c]),y=_t(C=>c([...d.current,C]),[c]),k=_t(()=>{let C,V;"resourceType"in e.value?(C=e.value.resourceType,V=e.value.id):[C,V]=e.value.reference?.split("/"),u(o,C,V).then(x).catch(console.log)},[o,e.value,u,x]);cx(()=>k(),[k]);function T(C){!n||!e.createCommunication||o.createResource(e.createCommunication(n,r,C)).then(V=>y(V)).catch(console.log)}function B(C){!n||!e.createMedia||o.createResource(e.createMedia(n,r,C)).then(V=>y(V)).then(()=>jt({id:"upload-notification",color:"teal",title:"Upload complete",message:"",icon:D.createElement(zo,{size:16}),autoClose:2e3})).catch(V=>jt({id:"upload-notification",color:"red",title:"Upload error",message:Bl(V),icon:D.createElement(It,{size:16}),autoClose:2e3}))}function A(C,V){return o.updateResource({...C,priority:V})}function I(C){A(C,"stat").then(k).catch(console.log)}function O(C){A(C,"routine").then(k).catch(console.log)}function g(C){t(`/${C.resourceType}/${C.id}`)}function M(C){t(`/${C.resourceType}/${C.id}/edit`)}function Y(C){t(`/${C.resourceType}/${C.id}/delete`)}function ne(C){t(`/${C.resourceType}/${C.id}/_history/${C.meta?.versionId}`)}function Le(){dx({id:"upload-notification",loading:!0,title:"Initializing upload...",message:"Please wait...",autoClose:!1,withCloseButton:!1})}function oo(C){jt({id:"upload-notification",loading:!0,title:"Uploading...",message:yx(C),autoClose:!1,withCloseButton:!1})}function me(C){jt({id:"upload-notification",color:"red",title:"Upload error",message:Bl(C),icon:D.createElement(It,{size:16}),autoClose:2e3})}return n?D.createElement(Sl,null,e.createCommunication&&D.createElement(ko,null,D.createElement($,{testid:"timeline-form",onSubmit:C=>{T(C.text);let V=a.current;V&&(V.value="",V.focus())}},D.createElement(lx,{spacing:"xs",noWrap:!0,style:{width:"100%"}},D.createElement(he,{value:r}),D.createElement(ux,{name:"text",ref:a,placeholder:"Add comment",style:{width:"100%",maxWidth:300}}),D.createElement(kl,{type:"submit",radius:"xl",color:"blue",variant:"filled"},D.createElement(Gr,{size:16})),D.createElement(Do,{onUpload:B,onUploadStart:Le,onUploadProgress:oo,onUploadError:me},C=>D.createElement(kl,{...C,radius:"xl",color:"blue",variant:"filled"},D.createElement(Wo,{size:16})))))),l.map(C=>{if(!C)return null;let V=`${C.resourceType}/${C.id}/${C.meta?.versionId}`;if(C.resourceType===n.resourceType&&C.id===n.id)return D.createElement(px,{key:V,history:f,resource:C,onDetails:ne});switch(C.resourceType){case"AuditEvent":return D.createElement(hx,{key:V,resource:C,onDetails:g});case"Communication":return D.createElement(Ix,{key:V,resource:C,onPin:C.priority!=="stat"?I:void 0,onUnpin:C.priority==="stat"?O:void 0,onDetails:g,onEdit:M,onDelete:Y});case"DiagnosticReport":return D.createElement(Cx,{key:V,resource:C,onDetails:g,onEdit:M,onDelete:Y});case"Media":return D.createElement(gx,{key:V,resource:C,onDetails:g,onEdit:M,onDelete:Y});default:return D.createElement(Ze,{key:V,resource:C,padding:!0},D.createElement(Ta,{value:C,ignoreMissingValues:!0}))}})):D.createElement(nx,{style:{width:"100%",height:"100%"}},D.createElement(sx,null))}function Eo(e){return D.createElement(Ge.Dropdown,null,D.createElement(Ge.Label,null,"Resource"),e.onPin&&D.createElement(Ge.Item,{icon:D.createElement(Ur,{size:14}),onClick:()=>e.onPin(e.resource),"aria-label":`Pin ${rt(e.resource)}`},"Pin"),e.onUnpin&&D.createElement(Ge.Item,{icon:D.createElement(Qr,{size:14}),onClick:()=>e.onUnpin(e.resource),"aria-label":`Unpin ${rt(e.resource)}`},"Unpin"),e.onDetails&&D.createElement(Ge.Item,{icon:D.createElement(Vr,{size:14}),onClick:()=>e.onDetails(e.resource),"aria-label":`Details ${rt(e.resource)}`},"Details"),e.onEdit&&D.createElement(Ge.Item,{icon:D.createElement(Rr,{size:14}),onClick:()=>e.onEdit(e.resource),"aria-label":`Edit ${rt(e.resource)}`},"Edit"),e.onDelete&&D.createElement(D.Fragment,null,D.createElement(Ge.Divider,null),D.createElement(Ge.Label,null,"Danger zone"),D.createElement(Ge.Item,{color:"red",icon:D.createElement($o,{size:14}),onClick:()=>e.onDelete(e.resource),"aria-label":`Delete ${rt(e.resource)}`},"Delete")))}function px(e){let o=xx(e.history,e.resource);return o?D.createElement(Ze,{resource:e.resource,padding:!0,popupMenuItems:D.createElement(Eo,{...e})},D.createElement(yl,{original:o,revised:e.resource})):D.createElement(Ze,{resource:e.resource,padding:!0,popupMenuItems:D.createElement(Eo,{...e})},D.createElement("h3",null,"Created"),D.createElement(Ta,{value:e.resource,ignoreMissingValues:!0,forceUseInput:!0}))}function xx(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 Ix(e){let{classes:o}=mx(),r=!e.resource.priority||e.resource.priority==="routine"?void 0:o.pinnedComment;return D.createElement(Ze,{resource:e.resource,profile:e.resource.sender,dateTime:e.resource.sent,padding:!0,className:r,popupMenuItems:D.createElement(Eo,{...e})},D.createElement("p",null,e.resource.payload?.[0]?.contentString))}function gx(e){let o=e.resource.content?.contentType,t=o&&!o.startsWith("image/")&&!o.startsWith("video/")&&o!=="application/pdf";return D.createElement(Ze,{resource:e.resource,padding:!!t,popupMenuItems:D.createElement(Eo,{...e})},D.createElement(Oe,{value:e.resource.content}))}function hx(e){return D.createElement(Ze,{resource:e.resource,padding:!0,popupMenuItems:D.createElement(Eo,{...e})},D.createElement(ix,null,D.createElement("pre",null,e.resource.outcomeDesc)))}function Cx(e){return D.createElement(Ze,{resource:e.resource,padding:!0,popupMenuItems:D.createElement(Eo,{...e})},D.createElement(Da,{value:e.resource}))}function yx(e){if(e.lengthComputable){let o=100*e.loaded/e.total;return`Uploaded: ${Ba(e.loaded)} / ${Ba(e.total)} ${o.toFixed(2)}%`}return`Uploaded: ${Ba(e.loaded)}`}function Ba(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 hM(e){return vx.createElement(Ye,{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{createReference as Zt}from"@medplum/core";import Sx from"react";function DM(e){return Sx.createElement(Ye,{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:Zt(o),subject:o.subject,sender:Zt(t),sent:new Date().toISOString(),payload:[{contentString:r}]}),createMedia:(o,t,r)=>({resourceType:"Media",status:"completed",encounter:Zt(o),subject:o.subject,operator:Zt(t),issued:new Date().toISOString(),content:r})})}import{Button as MI,Loader as wI,Table as OI}from"@mantine/core";import{normalizeOperationOutcome as EI}from"@medplum/core";import ae,{useEffect as ss,useRef as is,useState as fr}from"react";import{evalFhirPath as bx}from"@medplum/core";import Px from"react";function Ml(e){let o;try{o=bx(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 Px.createElement(xe,{value:o[0]||"",propertyType:e.propertyType})}import{ActionIcon as II,Button as Ho,Center as ar,createStyles as gI,Group as nr,Loader as hI,Menu as ns,Pagination as CI,Table as yI,Text as Na,UnstyledButton as vI}from"@mantine/core";import{DEFAULT_SEARCH_COUNT as Ga,formatSearchQuery as SI}from"@medplum/core";import S,{useCallback as fs,useEffect as ls,useRef as bI,useState as Ha}from"react";import{Box as Dx,Button as Tx,Modal as kx,Text as Bx}from"@mantine/core";import Lo from"react";function Ol(e){return Lo.createElement(kx,{title:"Export",closeButtonProps:{"aria-label":"Close"},opened:e.visible,onClose:e.onCancel},Lo.createElement(Dx,{display:"flex",sx:{justifyContent:"space-between"}},e.exportCsv&&Lo.createElement(wl,{text:"CSV",exportLogic:e.exportCsv,onCancel:e.onCancel}),e.exportTransactionBundle&&Lo.createElement(wl,{text:"Transaction Bundle",exportLogic:e.exportTransactionBundle,onCancel:e.onCancel})),Lo.createElement(Bx,{sx:{marginTop:"10px",marginLeft:"2px"}},"Limited to 1000 records"))}function wl(e){return Lo.createElement(Tx,{onClick:()=>{e.exportLogic(),e.onCancel()}},`Export as ${e.text}`)}import{Button as ft,Modal as Hx}from"@mantine/core";import{getDataType as Vx,getSearchParameters as qx,stringify as Gx}from"@medplum/core";import J,{useEffect as Ux,useRef as $l,useState as Qx}from"react";import{capitalize as Ax,DEFAULT_SEARCH_COUNT as Fx,evalFhirPathTyped as Mx,formatDateTime as wx,Operator as w}from"@medplum/core";import Yt from"react";var Ox={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]},Ex={eq:"equals",ne:"not equals",gt:"greater than",lt:"less than",ge:"greater than or equals",le:"less than or equals",sa:"starts after",eb:"ends before",ap:"approximately",contains:"contains",exact:"exact",text:"text",not:"not",above:"above",below:"below",in:"in","not-in":"not in","of-type":"of type",missing:"missing",identifier:"identifier",iterate:"iterate"};function at(e,o){return{...e,filters:o,offset:0,name:void 0}}function GM(e){return at(e,[])}function er(e,o){return at(e,(e.filters??[]).filter(t=>t.code!==o))}function Ro(e,o,t,r,a){a&&(e=er(e,o));let n=[];return e.filters&&n.push(...e.filters),n.push({code:o,operator:t,value:r??""}),at(e,n)}function UM(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 Ll(e,o){if(!e.filters)return e;let t=[...e.filters];return t.splice(o,1),{...e,filters:t,name:void 0}}function Rl(e,o){return Aa(e,o,-1)}function Nl(e,o){return Aa(e,o,0)}function Hl(e,o){return Aa(e,o,1)}function Aa(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),Ma(e,o,r,a)}function Vl(e,o){return Fa(e,o,-1)}function ql(e,o){return Fa(e,o,0)}function Gl(e,o){return Fa(e,o,1)}function Fa(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),Ma(e,o,r,a)}function Ul(e,o){let t=new Date;return t.setMonth(0),t.setDate(1),t.setHours(0,0,0,0),Ma(e,o,t,new Date)}function Ma(e,o,t,r){return e=er(e,o),e=El(e,o,w.GREATER_THAN_OR_EQUALS,t),e=El(e,o,w.LESS_THAN_OR_EQUALS,r),e}function El(e,o,t,r){return Ro(e,o,t,r.toISOString())}function wa(e,o,t=!0){return Ro(e,o,w.MISSING,t.toString())}function Lx(e,o){return e.offset===o?e:{...e,offset:o,name:void 0}}function Ql(e,o){let t=e.count??Fx,r=(o-1)*t;return Lx(e,r)}function Oa(e,o,t){return o===zl(e)&&t!==void 0&&t===Wl(e)?e:{...e,sortRules:[{code:o,descending:!!t}],name:void 0}}function QM(e,o){let t=!1;return zl(e)===o&&(t=!Wl(e)),Oa(e,o,t)}function zl(e){let o=e.sortRules;if(!o||o.length===0)return;let t=o[0].code;return t.startsWith("-")?t.substr(1):t}function Wl(e){let o=e.sortRules;return!o||o.length===0?!1:!!o[0].descending}function Xl(e){return Ox[e.type]}function nt(e){return Ex[e]??""}function Ce(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(Ax).join(" "))}function Jl(e,o){let t=o.name;return t==="id"?e.id:t==="meta.versionId"?e.meta?.versionId:t==="_lastUpdated"?wx(e.meta?.lastUpdated):o.elementDefinition&&`${e.resourceType}.${o.name}`===o.elementDefinition.path?Rx(e,o.elementDefinition):o.searchParams&&o.searchParams.length===1&&o.name===o.searchParams[0].code?Nx(e,o.searchParams[0]):null}function Rx(e,o){let t=o.path?.split(".")?.pop()?.replaceAll("[x]","")??"",[r,a]=ve({type:e.resourceType,value:e},t);return r?Yt.createElement(xe,{property:o,propertyType:a,value:r,maxWidth:200,ignoreMissingValues:!0,link:!1}):null}function Nx(e,o){let t=Mx(o.expression,[{type:e.resourceType,value:e}]);return!t||t.length===0?null:Yt.createElement(Yt.Fragment,null,t.map((r,a)=>Yt.createElement(xe,{key:`${a}-${t.length}`,propertyType:r.type,value:r.value,maxWidth:200,ignoreMissingValues:!0,link:!1})))}function Kl(e){let[o,t]=Qx({search:JSON.parse(Gx(e.search))}),r=$l(null),a=$l(null);Ux(()=>{t({search:e.search})},[e.search]);function n(I){I.key==="Enter"&&i()}function f(){i()}function s(I){I.key==="Enter"&&u()}function l(){u()}function i(){let I=o.search.fields??[],O=r.current?.value;if(O){let g=[...I,O];t({search:{...o.search,fields:g}})}}function u(){let I=o.search.fields??[],O=a.current?.value;if(O){let g=[...I];g.splice(g.indexOf(O),1),t({search:{...o.search,fields:g}})}}function d(){let I=o.search.fields??[],O=a.current?.value;if(!O)return;let g=[...I],M=g.indexOf(O);M<=0||(x(g,M,M-1),t({search:{...o.search,fields:g}}))}function c(){let I=o.search.fields??[],O=a.current?.value;if(!O)return;let g=[...I],M=g.indexOf(O);M>=g.length-1||(x(g,M,M+1),t({search:{...o.search,fields:g}}))}function x(I,O,g){let M=I[O];I[O]=I[g],I[g]=M}if(!e.visible)return null;let y=e.search.resourceType,k=Vx(y),T=qx(y),B=o.search.fields??[],A=zx(k,T).filter(I=>!B.includes(I)).sort((I,O)=>I.localeCompare(O));return J.createElement(Hx,{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"},A.map(I=>J.createElement("option",{key:I,value:I},Ce(I))))),J.createElement("td",{colSpan:2,align:"center"},J.createElement("select",{ref:a,size:15,tabIndex:4,style:{width:"200px"},onKeyDown:I=>s(I),onDoubleClick:()=>l(),"data-testid":"selected"},B.map(I=>J.createElement("option",{key:I,value:I},Ce(I))))))),J.createElement("tfoot",null,J.createElement("tr",null,J.createElement("td",{align:"center"},J.createElement(ft,{compact:!0,variant:"outline",onClick:i},"Add")),J.createElement("td",{align:"center"},J.createElement(ft,{compact:!0,variant:"outline",onClick:u},"Remove")),J.createElement("td",{align:"center"},J.createElement(ft,{compact:!0,variant:"outline",onClick:d},"Up")),J.createElement("td",{align:"center"},J.createElement(ft,{compact:!0,variant:"outline",onClick:c},"Down")))))),J.createElement(ft,{onClick:()=>e.onOk(o.search)},"OK"))}function zx(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(Ce(n));if(o)for(let n of Object.keys(o)){let f=Ce(n);!r.has(n)&&!a.has(f)&&(t.push(n),r.add(n),a.add(Ce(n)))}return t}import{Button as st,Group as Zx,Modal as Yx,NativeSelect as _l}from"@mantine/core";import{getSearchParameters as eI,stringify as Zl}from"@medplum/core";import R,{useEffect as oI,useRef as es,useState as La}from"react";import{formatDateTime as Wx,getSearchParameterDetails as Xx,globalSchema as Jx,Operator as jl,SearchParameterType as $x}from"@medplum/core";import lt from"react";function or(e){let{resourceType:o,filter:t}=e,r=Jx.types[o].searchParams?.[t.code];if(r){if(r.type==="reference"&&(t.operator===jl.EQUALS||t.operator===jl.NOT_EQUALS))return lt.createElement(Ee,{value:{reference:t.value}});let a=Xx(o,r);if(t.code==="_lastUpdated"||a.type===$x.DATETIME)return lt.createElement(lt.Fragment,null,Wx(t.value))}return lt.createElement(lt.Fragment,null,t.value)}import{Checkbox as Kx,TextInput as Ea}from"@mantine/core";import{getSearchParameterDetails as jx,SearchParameterType as No}from"@medplum/core";import io from"react";function tr(e){let o=jx(e.resourceType,e.searchParam),t="filter-value";switch(o.type){case No.REFERENCE:return io.createElement(wo,{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 No.BOOLEAN:return io.createElement(Kx,{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 No.DATE:return io.createElement(Ea,{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 No.DATETIME:return io.createElement(Fe,{name:t,defaultValue:e.defaultValue,autoFocus:e.autoFocus,onChange:e.onChange});case No.NUMBER:return io.createElement(Ea,{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 No.QUANTITY:return io.createElement(Pe,{name:t,defaultValue:_x(e.defaultValue),autoFocus:e.autoFocus,onChange:r=>{r?e.onChange(`${r.value}`):e.onChange("")}});default:return io.createElement(Ea,{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 _x(e){if(e){let[o,t,r]=e.split("|");if(o)return{value:parseFloat(o),system:t,unit:r}}}function os(e){let[o,t]=La(JSON.parse(Zl(e.search))),[r,a]=La(-1),n=es(o);n.current=o,oI(()=>{t(JSON.parse(Zl(e.search)))},[e.search]);function f(u){t(Ro(n.current,u.code,u.operator,u.value))}if(!e.visible)return null;let s=e.search.resourceType,l=eI(s)??{},i=o.filters||[];return R.createElement(Yx,{title:"Filters",closeButtonProps:{"aria-label":"Close"},size:900,opened:e.visible,onClose:e.onCancel},R.createElement("div",null,R.createElement("table",null,R.createElement("colgroup",null,R.createElement("col",{style:{width:200}}),R.createElement("col",{style:{width:200}}),R.createElement("col",{style:{width:380}}),R.createElement("col",{style:{width:120}})),R.createElement("thead",null,R.createElement("tr",null,R.createElement("th",null,"Field"),R.createElement("th",null,"Operation"),R.createElement("th",null,"Value"),R.createElement("th",null,"Actions"))),R.createElement("tbody",null,i.map((u,d)=>d===r?R.createElement(Yl,{key:`filter-${u.code}-${u.operator}-${u.value}-input`,resourceType:s,searchParams:l,defaultValue:u,okText:"Save",onOk:c=>{let x=[...i];x[d]=c,t(at(n.current,x)),a(-1)},onCancel:()=>a(-1)}):R.createElement(tI,{key:`filter-${u.code}-${u.operator}-${u.value}-display`,resourceType:s,searchParams:l,filter:u,onEdit:()=>a(d),onDelete:()=>t(Ll(n.current,d))})),R.createElement(Yl,{resourceType:s,searchParams:l,okText:"Add",onOk:f})))),R.createElement(Zx,{position:"right",mt:"xl"},R.createElement(st,{onClick:()=>e.onOk(n.current)},"OK")))}function tI(e){let{filter:o}=e;return R.createElement("tr",null,R.createElement("td",null,Ce(o.code)),R.createElement("td",null,nt(o.operator)),R.createElement("td",null,R.createElement(or,{resourceType:e.resourceType,filter:o})),R.createElement("td",null,R.createElement(st,{compact:!0,variant:"outline",onClick:e.onEdit},"Edit"),R.createElement(st,{compact:!0,variant:"outline",onClick:e.onDelete},"Delete")))}function Yl(e){let[o,t]=La(e.defaultValue??{}),r=es(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&&Xl(s);return R.createElement("tr",null,R.createElement("td",null,R.createElement(_l,{"data-testid":"filter-field",defaultValue:r.current.code,onChange:i=>a(i.currentTarget.value),data:["",...Object.keys(e.searchParams).map(i=>({value:i,label:Ce(i)}))]})),R.createElement("td",null,l&&R.createElement(_l,{"data-testid":"filter-operation",defaultValue:o.operator,onChange:i=>n(i.currentTarget.value),data:["",...l.map(i=>({value:i,label:nt(i)}))]})),R.createElement("td",null,s&&o.operator&&R.createElement(tr,{resourceType:e.resourceType,searchParam:s,defaultValue:o.value,onChange:f})),R.createElement("td",null,o.code&&o.operator&&R.createElement(st,{compact:!0,variant:"outline",onClick:()=>{e.onOk(r.current),t({})}},e.okText),e.onCancel&&R.createElement(st,{compact:!0,variant:"outline",onClick:e.onCancel},"Cancel")))}import{Button as rI,Grid as Ra,Modal as aI}from"@mantine/core";import uo,{useState as nI}from"react";function ts(e){let[o,t]=nI(e.defaultValue??"");if(!e.visible||!e.searchParam||!e.filter)return null;function r(){e.onOk({...e.filter,value:o})}return uo.createElement(aI,{title:e.title,size:"xl",opened:e.visible,onClose:e.onCancel},uo.createElement($,{onSubmit:r},uo.createElement(Ra,null,uo.createElement(Ra.Col,{span:10},uo.createElement(tr,{resourceType:e.resourceType,searchParam:e.searchParam,defaultValue:o,autoFocus:!0,onChange:t})),uo.createElement(Ra.Col,{span:2},uo.createElement(rI,{onClick:r,fullWidth:!0},"OK")))))}import{Menu as F}from"@mantine/core";import{Operator as de}from"@medplum/core";import m from"react";function rs(e){if(!e.searchParams)return null;function o(n,f){a(Oa(e.search,n.code,f))}function t(n){a(er(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(fI,{search:e.search,searchParam:e.searchParams[0],onSort:o,onPrompt:r,onChange:a,onClear:t}):m.createElement(F.Dropdown,null,e.searchParams.map(n=>m.createElement(F.Item,{key:n.code},Ce(n.code))))}function fI(e){switch(e.searchParam.type){case"date":return m.createElement(lI,{...e});case"number":case"quantity":return m.createElement(sI,{...e});case"reference":return m.createElement(iI,{...e});case"string":case"token":case"uri":return m.createElement(uI,{...e});default:return m.createElement(m.Fragment,null,"Unknown search param type: ",e.searchParam.type)}}function lI(e){let{searchParam:o}=e,t=o.code;return m.createElement(F.Dropdown,null,m.createElement(F.Item,{icon:m.createElement(Xo,{size:14}),onClick:()=>e.onSort(o,!1)},"Sort Oldest to Newest"),m.createElement(F.Item,{icon:m.createElement(Jo,{size:14}),onClick:()=>e.onSort(o,!0)},"Sort Newest to Oldest"),m.createElement(F.Divider,null),m.createElement(F.Item,{icon:m.createElement(Io,{size:14}),onClick:()=>e.onPrompt(o,de.EQUALS)},"Equals..."),m.createElement(F.Item,{icon:m.createElement(xo,{size:14}),onClick:()=>e.onPrompt(o,de.NOT_EQUALS)},"Does not equal..."),m.createElement(F.Divider,null),m.createElement(F.Item,{icon:m.createElement(ht,{size:14}),onClick:()=>e.onPrompt(o,de.ENDS_BEFORE)},"Before..."),m.createElement(F.Item,{icon:m.createElement(gt,{size:14}),onClick:()=>e.onPrompt(o,de.STARTS_AFTER)},"After..."),m.createElement(F.Item,{icon:m.createElement(kr,{size:14}),onClick:()=>e.onPrompt(o,de.EQUALS)},"Between..."),m.createElement(F.Divider,null),m.createElement(F.Item,{icon:m.createElement(Ne,{size:14}),onClick:()=>e.onChange(Hl(e.search,t))},"Tomorrow"),m.createElement(F.Item,{icon:m.createElement(Ne,{size:14}),onClick:()=>e.onChange(Nl(e.search,t))},"Today"),m.createElement(F.Item,{icon:m.createElement(Ne,{size:14}),onClick:()=>e.onChange(Rl(e.search,t))},"Yesterday"),m.createElement(F.Divider,null),m.createElement(F.Item,{icon:m.createElement(Ne,{size:14}),onClick:()=>e.onChange(Gl(e.search,t))},"Next Month"),m.createElement(F.Item,{icon:m.createElement(Ne,{size:14}),onClick:()=>e.onChange(ql(e.search,t))},"This Month"),m.createElement(F.Item,{icon:m.createElement(Ne,{size:14}),onClick:()=>e.onChange(Vl(e.search,t))},"Last Month"),m.createElement(F.Divider,null),m.createElement(F.Item,{icon:m.createElement(Ne,{size:14}),onClick:()=>e.onChange(Ul(e.search,t))},"Year to date"),m.createElement(rr,{...e}))}function sI(e){let{searchParam:o}=e;return m.createElement(F.Dropdown,null,m.createElement(F.Item,{icon:m.createElement(Xo,{size:14}),onClick:()=>e.onSort(o,!1)},"Sort Smallest to Largest"),m.createElement(F.Item,{icon:m.createElement(Jo,{size:14}),onClick:()=>e.onSort(o,!0)},"Sort Largest to Smallest"),m.createElement(F.Divider,null),m.createElement(F.Item,{icon:m.createElement(Io,{size:14}),onClick:()=>e.onPrompt(o,de.EQUALS)},"Equals..."),m.createElement(F.Item,{icon:m.createElement(xo,{size:14}),onClick:()=>e.onPrompt(o,de.NOT_EQUALS)},"Does not equal..."),m.createElement(F.Divider,null),m.createElement(F.Item,{icon:m.createElement(gt,{size:14}),onClick:()=>e.onPrompt(o,de.GREATER_THAN)},"Greater than..."),m.createElement(F.Item,{icon:m.createElement(go,{size:14}),onClick:()=>e.onPrompt(o,de.GREATER_THAN_OR_EQUALS)},"Greater than or equal to..."),m.createElement(F.Item,{icon:m.createElement(ht,{size:14}),onClick:()=>e.onPrompt(o,de.LESS_THAN)},"Less than..."),m.createElement(F.Item,{icon:m.createElement(go,{size:14}),onClick:()=>e.onPrompt(o,de.LESS_THAN_OR_EQUALS)},"Less than or equal to..."),m.createElement(rr,{...e}))}function iI(e){let{searchParam:o}=e;return m.createElement(F.Dropdown,null,m.createElement(F.Item,{icon:m.createElement(Io,{size:14}),onClick:()=>e.onPrompt(o,de.EQUALS)},"Equals..."),m.createElement(F.Item,{icon:m.createElement(xo,{size:14}),onClick:()=>e.onPrompt(o,de.NOT)},"Does not equal..."),m.createElement(rr,{...e}))}function uI(e){let{searchParam:o}=e;return m.createElement(F.Dropdown,null,m.createElement(F.Item,{icon:m.createElement(Xo,{size:14}),onClick:()=>e.onSort(o,!1)},"Sort A to Z"),m.createElement(F.Item,{icon:m.createElement(Jo,{size:14}),onClick:()=>e.onSort(o,!0)},"Sort Z to A"),m.createElement(F.Divider,null),m.createElement(F.Item,{icon:m.createElement(Io,{size:14}),onClick:()=>e.onPrompt(o,de.EQUALS)},"Equals..."),m.createElement(F.Item,{icon:m.createElement(xo,{size:14}),onClick:()=>e.onPrompt(o,de.NOT)},"Does not equal..."),m.createElement(F.Divider,null),m.createElement(F.Item,{icon:m.createElement(Ar,{size:14}),onClick:()=>e.onPrompt(o,de.CONTAINS)},"Contains..."),m.createElement(F.Item,{icon:m.createElement(Br,{size:14}),onClick:()=>e.onPrompt(o,de.EQUALS)},"Does not contain..."),m.createElement(rr,{...e}))}function rr(e){let{searchParam:o}=e,t=o.code;return m.createElement(m.Fragment,null,m.createElement(F.Divider,null),m.createElement(F.Item,{icon:m.createElement(Dr,{size:14}),onClick:()=>e.onChange(wa(e.search,t))},"Missing"),m.createElement(F.Item,{icon:m.createElement(Pr,{size:14}),onClick:()=>e.onChange(wa(e.search,t,!1))},"Not missing"),m.createElement(F.Divider,null),m.createElement(F.Item,{icon:m.createElement(jr,{size:14}),onClick:()=>e.onClear(o)},"Clear filters"))}import{getElementDefinition as dI,getSearchParameter as cI,getSearchParameterDetails as mI,getSearchParameters as pI}from"@medplum/core";function as(e){let o=e.resourceType,t=[];for(let r of e.fields||["id","_lastUpdated"])t.push(xI(o,r));return t}function xI(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=dI(e,o),r=cI(e,o.toLowerCase());if(t&&r)return{name:o,elementDefinition:t,searchParams:[r]};if(t){let a=pI(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=mI(e,r);return{name:o,elementDefinition:a.elementDefinitions?.[0],searchParams:[r]}}return{name:o}}var Va=class extends Event{constructor(t){super("change");this.definition=t}},qa=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}},PI=gI(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 DI(e){let{classes:o}=PI(),t=P(),[r,a]=Ha(!1),[n,f]=Ha(),{search:s,onLoad:l}=e,[i,u]=Ha({selected:{},fieldEditorVisible:!1,filterEditorVisible:!1,exportDialogVisible:!1,filterDialogVisible:!1}),d=bI(i);d.current=i;let c=s.total??"accurate",x=fs(v=>{f(void 0),t.search(s.resourceType,SI({...s,total:c,fields:void 0}),v).then(z=>{u({...d.current,searchResponse:z}),l&&l(new qa(z))}).catch(z=>{u({...d.current,searchResponse:void 0}),f(z)})},[t,s,c,l]),y=fs(()=>{u({...d.current,searchResponse:void 0}),x({cache:"reload"})},[x]);ls(()=>{x()},[x]);function k(v,z){v.stopPropagation();let fe=v.target.checked,te={...d.current.selected};fe?te[z]=!0:delete te[z],u({...d.current,selected:te})}function T(v){v.stopPropagation();let Re=v.target.checked,fe={},te=d.current.searchResponse;Re&&te?.entry&&te.entry.forEach(be=>{be.resource?.id&&(fe[be.resource.id]=!0)}),u({...d.current,selected:fe})}function B(){let v=d.current;if(!v.searchResponse?.entry||v.searchResponse.entry.length===0)return!1;for(let z of v.searchResponse.entry)if(z.resource?.id&&!v.selected[z.resource.id])return!1;return!0}function A(v){e.onChange&&e.onChange(new Va(v))}function I(v,z){if(yt(v.target)||v.button===2)return;N(v);let Re=v.button===1||v.ctrlKey||v.metaKey;!Re&&e.onClick&&e.onClick(new co(z,v)),Re&&e.onAuxClick&&e.onAuxClick(new co(z,v))}function O(){return!!(e.onExport??e.onExportCsv??e.onExportTransactionBundle)}if(ls(()=>{a(!1),t.requestSchema(e.search.resourceType).then(()=>a(!0)).catch(console.log)},[t,e.search.resourceType]),!r)return S.createElement(ar,{style:{width:"100%",height:"100%"}},S.createElement(hI,null));let g=e.checkboxesEnabled,M=as(s),Y=s.resourceType,ne=i.searchResponse,oo=ne?.entry?.map(v=>v.resource),me="subtle",C="gray",V=16,we=window.innerWidth<768;return S.createElement("div",{className:o.root,"data-testid":"search-control"},!e.hideToolbar&&S.createElement(nr,{position:"apart",mb:"xl"},S.createElement(nr,{spacing:2},S.createElement(Ho,{compact:!0,variant:me,color:C,leftIcon:S.createElement(wr,{size:V}),onClick:()=>u({...d.current,fieldEditorVisible:!0})},"Fields"),S.createElement(Ho,{compact:!0,variant:me,color:C,leftIcon:S.createElement(Hr,{size:V}),onClick:()=>u({...d.current,filterEditorVisible:!0})},"Filters"),e.onNew&&S.createElement(Ho,{compact:!0,variant:me,color:C,leftIcon:S.createElement(Nr,{size:V}),onClick:e.onNew},"New..."),!we&&O()&&S.createElement(Ho,{compact:!0,variant:me,color:C,leftIcon:S.createElement(Kr,{size:V}),onClick:e.onExport?e.onExport:()=>u({...d.current,exportDialogVisible:!0})},"Export..."),!we&&e.onDelete&&S.createElement(Ho,{compact:!0,variant:me,color:C,leftIcon:S.createElement($o,{size:V}),onClick:()=>e.onDelete(Object.keys(i.selected))},"Delete..."),!we&&e.onBulk&&S.createElement(Ho,{compact:!0,variant:me,color:C,leftIcon:S.createElement(Tr,{size:V}),onClick:()=>e.onBulk(Object.keys(i.selected))},"Bulk...")),S.createElement(nr,{spacing:2},ne&&S.createElement(Na,{size:"xs",color:"dimmed"},AI(s,ne.total),"-",FI(s,ne.total)," of"," ",`${c==="estimate"?"~":""}${ne.total?.toLocaleString()}`),S.createElement(II,{title:"Refresh",onClick:y},S.createElement(Wr,{size:"1.125rem"})))),S.createElement(yI,{className:o.table},S.createElement("thead",null,S.createElement("tr",null,g&&S.createElement("th",null,S.createElement("input",{type:"checkbox",value:"checked","aria-label":"all-checkbox","data-testid":"all-checkbox",checked:B(),onChange:v=>T(v)})),M.map(v=>S.createElement("th",{key:v.name},S.createElement(ns,{shadow:"md",width:240,position:"bottom-end"},S.createElement(ns.Target,null,S.createElement(vI,{className:o.control},S.createElement(nr,{position:"apart",noWrap:!0},S.createElement(Na,{weight:500,size:"sm"},Ce(v.name)),S.createElement(ar,{className:o.icon},S.createElement(vr,{size:14,stroke:1.5}))))),S.createElement(rs,{search:e.search,searchParams:v.searchParams,onPrompt:(z,Re)=>{u({...d.current,filterDialogVisible:!0,filterDialogSearchParam:z,filterDialogFilter:Re})},onChange:z=>{A(z)}}))))),!e.hideFilters&&S.createElement("tr",null,g&&S.createElement("th",null),M.map(v=>S.createElement("th",{key:v.name},v.searchParams&&S.createElement(TI,{resourceType:Y,searchParams:v.searchParams,filters:e.search.filters}))))),S.createElement("tbody",null,oo?.map(v=>v&&S.createElement("tr",{key:v.id,className:o.tr,"data-testid":"search-control-row",onClick:z=>I(z,v),onAuxClick:z=>I(z,v)},g&&S.createElement("td",null,S.createElement("input",{type:"checkbox",value:"checked","data-testid":"row-checkbox","aria-label":`Checkbox for ${v.id}`,checked:!!i.selected[v.id],onChange:z=>k(z,v.id)})),M.map(z=>S.createElement("td",{key:z.name},Jl(v,z))))))),oo?.length===0&&S.createElement(Ke,null,S.createElement(ar,{style:{height:150}},S.createElement(Na,{size:"xl",color:"dimmed"},"No results"))),ne?.total!==void 0&&ne.total>0&&S.createElement(ar,{m:"md",p:"md"},S.createElement(CI,{value:kI(s),total:BI(s,ne.total),onChange:v=>A(Ql(s,v)),getControlProps:v=>{switch(v){case"previous":return{"aria-label":"Previous page"};case"next":return{"aria-label":"Next page"};default:return{}}}})),n&&S.createElement("div",{"data-testid":"search-error"},S.createElement("pre",{style:{textAlign:"left"}},JSON.stringify(n,void 0,2))),S.createElement(Kl,{search:e.search,visible:d.current.fieldEditorVisible,onOk:v=>{A(v),u({...d.current,fieldEditorVisible:!1})},onCancel:()=>{u({...d.current,fieldEditorVisible:!1})}}),S.createElement(os,{search:e.search,visible:d.current.filterEditorVisible,onOk:v=>{A(v),u({...d.current,filterEditorVisible:!1})},onCancel:()=>{u({...d.current,filterEditorVisible:!1})}}),S.createElement(Ol,{visible:d.current.exportDialogVisible,exportCsv:e.onExportCsv,exportTransactionBundle:e.onExportTransactionBundle,onCancel:()=>{u({...d.current,exportDialogVisible:!1})}}),S.createElement(ts,{key:i.filterDialogSearchParam?.code,visible:d.current.filterDialogVisible,title:i.filterDialogSearchParam?.code?Ce(i.filterDialogSearchParam.code):"",resourceType:Y,searchParam:i.filterDialogSearchParam,filter:i.filterDialogFilter,defaultValue:"",onOk:v=>{A(Ro(e.search,v.code,v.operator,v.value)),u({...d.current,filterDialogVisible:!1})},onCancel:()=>{u({...d.current,filterDialogVisible:!1})}}))}var eO=S.memo(DI);function TI(e){let o=(e.filters??[]).filter(t=>e.searchParams.find(r=>r.code===t.code));return o.length===0?S.createElement("span",null,"no filters"):S.createElement(S.Fragment,null,o.map(t=>S.createElement("div",{key:`filter-${t.code}-${t.operator}-${t.value}`},nt(t.operator),"\xA0",S.createElement(or,{resourceType:e.resourceType,filter:t}))))}function kI(e){return Math.floor((e.offset??0)/(e.count??Ga))+1}function BI(e,o){let t=e.count??Ga;return Math.ceil(o/t)}function AI(e,o){return Math.min(o,(e.offset??0)+1)}function FI(e,o){return Math.min(o,((e.offset??0)+1)*(e.count??Ga))}function LI(e){let o=P(),[t,r]=fr(!1),[a,n]=fr(),{query:f,fields:s}=e,[l,i]=fr(),[u,d]=fr({}),c=is();c.current=l;let x=is({});x.current=u,ss(()=>{n(void 0),o.graphql(f).then(i).catch(I=>n(EI(I)))},[o,f]);function y(I,O){I.stopPropagation();let M=I.target.checked,Y={...x.current};M?Y[O]=!0:delete Y[O],d(Y)}function k(I){I.stopPropagation();let g=I.target.checked,M={},Y=c.current?.data.ResourceList;g&&Y&&Y.forEach(ne=>{ne.id&&(M[ne.id]=!0)}),d(M)}function T(){let I=c.current?.data.ResourceList;if(!I||I.length===0)return!1;for(let O of I)if(O.id&&!x.current[O.id])return!1;return!0}function B(I,O){yt(I.target)||(N(I),I.button!==1&&e.onClick&&e.onClick(new co(O,I)),I.button===1&&e.onAuxClick&&e.onAuxClick(new co(O,I)))}if(ss(()=>{o.requestSchema(e.resourceType).then(()=>r(!0)).catch(console.log)},[o,e.resourceType]),!t)return ae.createElement(wI,null);let A=e.checkboxesEnabled;return ae.createElement("div",{onContextMenu:I=>N(I),"data-testid":"search-control"},ae.createElement(OI,null,ae.createElement("thead",null,ae.createElement("tr",null,A&&ae.createElement("th",null,ae.createElement("input",{type:"checkbox",value:"checked","aria-label":"all-checkbox","data-testid":"all-checkbox",checked:T(),onChange:I=>k(I)})),s.map(I=>ae.createElement("th",{key:I.name},I.name)))),ae.createElement("tbody",null,l?.data.ResourceList.map(I=>I&&ae.createElement("tr",{key:I.id,"data-testid":"search-control-row",onClick:O=>B(O,I),onAuxClick:O=>B(O,I)},A&&ae.createElement("td",null,ae.createElement("input",{type:"checkbox",value:"checked","data-testid":"row-checkbox","aria-label":`Checkbox for ${I.id}`,checked:!!u[I.id],onChange:O=>y(O,I.id)})),s.map(O=>ae.createElement("td",{key:O.name},ae.createElement(Ml,{propertyType:O.propertyType,path:O.fhirPath,resource:I}))))))),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(MI,{onClick:()=>e.onBulk(Object.keys(x.current))},"Bulk..."))}var iO=ae.memo(LI);import{createReference as lr}from"@medplum/core";import RI,{useCallback as NI}from"react";function IO(e){let o=NI((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 RI.createElement(Ye,{value:e.patient,loadTimelineResources:o,createCommunication:(t,r,a)=>({resourceType:"Communication",status:"completed",subject:lr(t),sender:lr(r),sent:new Date().toISOString(),payload:[{contentString:a}]}),createMedia:(t,r,a)=>({resourceType:"Media",status:"completed",subject:lr(t),operator:lr(r),issued:new Date().toISOString(),content:a})})}import{Anchor as ds,Button as HI,createStyles as VI,NativeSelect as qI,Stack as GI,TextInput as Qa}from"@mantine/core";import{getReferenceString as UI}from"@medplum/core";import q,{useEffect as us,useRef as cs,useState as it}from"react";var ms=VI(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 wO(e){let o=P(),t=X(e.value),[r,a]=it(!1),[n,f]=it(),[s,l]=it(),[i,u]=it();function d(){l(void 0)}function c(){f(void 0)}let x=cs();if(x.current=i,us(()=>{o.requestSchema("PlanDefinition").then(()=>a(!0)).catch(console.log)},[o]),us(()=>(u($I(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(k,T){u({...x.current,[k]:T})}return q.createElement("div",null,q.createElement($,{testid:"questionnaire-form",onSubmit:()=>e.onSubmit(i)},q.createElement(Qa,{label:"Plan Title",defaultValue:i.title,onChange:k=>y("title",k.currentTarget.value)}),q.createElement(ps,{actions:i.action||[],selectedKey:n,setSelectedKey:f,hoverKey:s,setHoverKey:l,onChange:k=>y("action",k)}),q.createElement(HI,{type:"submit"},"Save")))}function ps(e){let{classes:o}=ms(),t=cs();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 q.createElement("div",{className:o.section},e.actions.map(f=>q.createElement("div",{key:f.id},q.createElement(QI,{action:f,selectedKey:e.selectedKey,setSelectedKey:e.setSelectedKey,hoverKey:e.hoverKey,setHoverKey:e.setHoverKey,onChange:r,onRemove:()=>n(f)}))),q.createElement("div",{className:o.bottomActions},q.createElement(ds,{href:"#",onClick:f=>{N(f),a({id:Is()})}},"Add action")))}function QI(e){let{classes:o,cx:t}=ms(),{action:r}=e,a=JI(r),n=e.selectedKey===e.action.id,f=e.hoverKey===e.action.id;function s(u){u.stopPropagation(),e.setSelectedKey(e.action.id)}function l(u){N(u),e.setHoverKey(e.action.id)}let i=t(o.section,{[o.editing]:n,[o.hovering]:f&&!n});return q.createElement("div",{"data-testid":r.id,className:i,onClick:s,onMouseOver:l},n?q.createElement(WI,{action:r,actionType:a,onChange:e.onChange,selectedKey:e.selectedKey,setSelectedKey:e.setSelectedKey,hoverKey:e.hoverKey,setHoverKey:e.setHoverKey,onRemove:e.onRemove}):q.createElement(zI,{action:r,actionType:a}),q.createElement("div",{className:o.bottomActions},q.createElement(ds,{href:"#",onClick:u=>{u.preventDefault(),e.onRemove()}},"Remove")))}var za={path:"PlanDefinition.action.timing[x]",min:0,max:1,description:"",isArray:!1,constraints:[],type:["dateTime","Period","Range","Timing"].map(e=>({code:e}))};function zI(e){let{action:o,actionType:t}=e,[r,a]=xs(o);return q.createElement("div",null,q.createElement("div",null,o.title||"Untitled"," ",t&&`(${t})`),o.definitionCanonical&&q.createElement("div",null,q.createElement(lo,{value:{reference:o.definitionCanonical}})),r&&q.createElement("div",null,q.createElement(xe,{property:za,propertyType:a,value:r})))}function WI(e){let{action:o}=e,[t,r]=it(e.actionType);function a(n,f){e.onChange({...o,[n]:f})}return q.createElement(GI,{spacing:"xl"},q.createElement(Qa,{name:`actionTitle-${o.id}`,label:"Title",defaultValue:o.title,onChange:n=>a("title",n.currentTarget.value)}),q.createElement(Qa,{name:`actionDescription-${o.id}`,label:"Description",defaultValue:o.description,onChange:n=>a("description",n.currentTarget.value)}),q.createElement(qI,{label:"Type of Action",description:"The type of the action to be performed.",name:`actionType-${o.id}`,defaultValue:t,onChange:n=>r(n.currentTarget.value),data:["","appointment","lab","questionnaire","task"]}),o.action&&o.action.length>0&&q.createElement(ps,{actions:o.action,selectedKey:e.selectedKey,setSelectedKey:e.setSelectedKey,hoverKey:e.hoverKey,setHoverKey:e.setHoverKey,onChange:n=>a("action",n)}),(()=>{switch(t){case"appointment":return q.createElement(sr,{title:"Appointment",description:"The subject must schedule an appointment from the schedule.",resourceType:"Schedule",action:o,onChange:e.onChange});case"lab":return q.createElement(sr,{title:"Lab",description:"The subject must complete the following lab panel.",resourceType:"ActivityDefinition",action:o,onChange:e.onChange});case"questionnaire":return q.createElement(sr,{title:"Questionnaire",description:"The subject must complete the selected questionnaire.",resourceType:"Questionnaire",action:o,onChange:e.onChange});case"task":return q.createElement(sr,{title:"Task",description:"The subject must complete the following task.",resourceType:"ActivityDefinition",action:o,onChange:e.onChange});default:return null}})(),q.createElement(Se,{title:"Timing",description:"When the action should take place."},q.createElement(XI,{name:"timing-"+o.id,action:o,onChange:e.onChange})))}function sr(e){let{id:o,definitionCanonical:t}=e.action,r=t?.startsWith(e.resourceType+"/")?{reference:t}:void 0;return q.createElement(zt,{name:o,resourceType:e.resourceType,defaultValue:r,loadOnFocus:!0,onChange:a=>{a?e.onChange({...e.action,definitionCanonical:UI(a)}):e.onChange({...e.action,definitionCanonical:void 0})}})}function XI(e){let o=e.action,t="timing",[r,a]=xs(o);return q.createElement(qe,{property:za,name:"timing[x]",defaultValue:r,defaultPropertyType:a,onChange:(n,f)=>{e.onChange(et(o,t,f??t,za,n))}})}function JI(e){if(e.definitionCanonical?.startsWith("Schedule"))return"appointment";if(e.definitionCanonical?.startsWith("Questionnaire/"))return"questionnaire";if(e.definitionCanonical?.startsWith("ActivityDefinition/"))return"task"}function xs(e){return ve({type:"PlanDefinitionAction",value:e},"timing")}var Ua=1;function Is(e){if(e){if(e.startsWith("id-")){let o=parseInt(e.substring(3),10);isNaN(o)||(Ua=Math.max(Ua,o+1))}return e}return"id-"+Ua++}function $I(e){return{...e,action:gs(e.action)}}function gs(e){if(e)return e.map(o=>({...o,id:Is(o.id),action:gs(o.action)}))}import{Anchor as Te,Box as _a,Button as xg,createStyles as Ig,Group as gg,NativeSelect as hg,Space as Cg,Textarea as yg,TextInput as Za,Title as vg}from"@mantine/core";import{getElementDefinition as Sg,isResource as bg}from"@medplum/core";import b,{useEffect as ks,useRef as Pg,useState as mr}from"react";import{Checkbox as eg,Group as og,MultiSelect as tg,NativeSelect as rg,Radio as bs,Textarea as ag,TextInput as ut}from"@mantine/core";import{capitalize as Ja,deepEquals as ng,formatCoding as $a,getElementDefinition as fg,getTypedPropertyValue as Ue,stringify as Ps}from"@medplum/core";import Z from"react";import{deepClone as KI,evalFhirPathTyped as jI,formatCoding as _I,getExtension as hs,getTypedPropertyValue as Wa}from"@medplum/core";var ir=(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))(ir||{});function Cs(e){return e.type==="choice"||e.type==="open-choice"}function ys(e,o){if(!e.enableWhen)return!0;let t=e.enableBehavior??"any";for(let r of e.enableWhen){let a=Ss(o,r.question);if(r.operator==="exists"&&!r.answerBoolean&&!a?.length){if(t==="any")return!0;continue}let{anyMatch:n,allMatch:f}=YI(r,a,t);if(t==="any"&&n)return!0;if(t==="all"&&!f)return!1}return t!=="any"}function vs(e,o,t){return e.map(r=>{let a=t.answerOption?.find(f=>_I(f.valueCoding)===r||f[o]===r),n=Wa({type:"QuestionnaireItemAnswerOption",value:a},"value");return{[o]:n?.value}})}function Ss(e,o){if(e)for(let t of e){if(t.linkId===o)return t.answer;if(t.item){let r=Ss(t.item,o);if(r)return r}}}function ZI(e,o,t){if(t==="exists")return!!e===o.value;if(e){let r=t==="="||t==="!="?t?.replace("=","~"):t,[{value:a}]=jI(`%actualAnswer ${r} %expectedAnswer`,[e],{actualAnswer:e,expectedAnswer:o});return a}else return!1}function YI(e,o,t){let r=o||[],a=Wa({type:"QuestionnaireItemEnableWhen",value:e},"answer[x]"),n=!1,f=!0;for(let s of r){let l=Wa({type:"QuestionnaireResponseItemAnswer",value:s},"value[x]"),{operator:i}=e;if(ZI(l,a,i)?n=!0:f=!1,t==="any"&&n)break}return{anyMatch:n,allMatch:f}}function ur(e){let o=hs(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 dr(e,o){let t=KI(e),r=hs(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 cr(e){let o=e.item,t=e.index;function r(l,i){let u=i??0,d=e.currentResponseItems?.filter(x=>x.linkId===o.linkId)??[],c;Array.isArray(l)?c=l:c=ug(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=ja(e.allResponses,o,e.index,e.groupSequence)??Ue({type:"QuestionnaireItemInitial",value:f},"value");switch(a){case"boolean":return Z.createElement(Ht,{key:e.item.linkId,title:e.item.text,htmlFor:e.item.linkId},Z.createElement(eg,{id:e.item.linkId,name:e.item.linkId,defaultChecked:s?.value,onChange:l=>r({valueBoolean:l.currentTarget.checked},t)}));case"decimal":return Z.createElement(ut,{type:"number",step:"any",id:n,name:n,required:o.required,defaultValue:s?.value,onChange:l=>r({valueDecimal:l.currentTarget.valueAsNumber},t)});case"integer":return Z.createElement(ut,{type:"number",step:1,id:n,name:n,required:o.required,defaultValue:s?.value,onChange:l=>r({valueInteger:l.currentTarget.valueAsNumber},t)});case"date":return Z.createElement(ut,{type:"date",id:n,name:n,required:o.required,defaultValue:s?.value,onChange:l=>r({valueDate:l.currentTarget.value},t)});case"dateTime":return Z.createElement(Fe,{name:n,required:o.required,defaultValue:s?.value,onChange:l=>r({valueDateTime:l},t)});case"time":return Z.createElement(ut,{type:"time",id:n,name:n,required:o.required,defaultValue:s?.value,onChange:l=>r({valueTime:l.currentTarget.value},t)});case"string":case"url":return Z.createElement(ut,{id:n,name:n,required:o.required,defaultValue:s?.value,onChange:l=>r({valueString:l.currentTarget.value},t)});case"text":return Z.createElement(ag,{id:n,name:n,required:o.required,defaultValue:s?.value,onChange:l=>r({valueString:l.currentTarget.value},t)});case"attachment":return Z.createElement(og,{py:4},Z.createElement(bt,{name:n,defaultValue:s?.value,onChange:l=>r({valueAttachment:l},t)}));case"reference":return Z.createElement(wo,{name:n,required:o.required,targetTypes:ur(o),defaultValue:s?.value,onChange:l=>r({valueReference:l},t)});case"quantity":return Z.createElement(Pe,{name:n,required:o.required,defaultValue:s?.value,onChange:l=>r({valueQuantity:l},t),disableWheel:!0});case"choice":case"open-choice":return dg(o)?Z.createElement(lg,{name:n,item:o,initial:f,allResponses:e.allResponses,index:t,groupSequence:e.groupSequence,onChangeAnswer:l=>r(l,t)}):Z.createElement(sg,{name:n,item:o,initial:f,allResponses:e.allResponses,onChangeAnswer:l=>r(l,t)});default:return null}}function lg(e){let{name:o,item:t,initial:r}=e,a=Ue({type:"QuestionnaireItemInitial",value:r},"value"),n=[""];if(t.answerOption)for(let s of t.answerOption){let l=Ue({type:"QuestionnaireItemAnswerOption",value:s},"value");n.push(Xa(l))}let f=ja(e.allResponses,t,e.index,e.groupSequence)??Ue({type:"QuestionnaireItemInitial",value:r},"value");if(t.repeats){let{propertyName:s,data:l}=cg(e.item),i=mg(e.allResponses,t,e.groupSequence);return Z.createElement(tg,{data:l,placeholder:"Select items",searchable:!0,defaultValue:i||[Xa(a)],onChange:u=>{let d=vs(u,s,t);e.onChangeAnswer(d)}})}return Z.createElement(rg,{id:o,name:o,onChange:s=>{let l=s.currentTarget.selectedIndex;if(l===0){e.onChangeAnswer({});return}let i=t.answerOption[l-1],u=Ue({type:"QuestionnaireItemAnswerOption",value:i},"value"),d="value"+Ja(u.type);e.onChangeAnswer({[d]:u.value})},defaultValue:($a(f?.value)||f?.value)??Xa(a),data:n})}function sg(e){let{name:o,item:t,initial:r,onChangeAnswer:a,allResponses:n}=e;return t.answerValueSet?Z.createElement(Vt,{name:o,binding:t.answerValueSet,onChange:f=>a({valueCoding:f})}):Z.createElement(ig,{name:o,item:t,initial:r,allResponses:n,onChangeAnswer:a})}function ig(e){let{name:o,item:t,initial:r,onChangeAnswer:a}=e,n=fg("QuestionnaireItemAnswerOption","value[x]"),f=Ue({type:"QuestionnaireItemInitial",value:r},"value"),s=[],l;if(t.answerOption)for(let d=0;d<t.answerOption.length;d++){let c=t.answerOption[d],x=`${o}-option-${d}`,y=Ue({type:"QuestionnaireItemAnswerOption",value:c},"value");f&&Ps(y)===Ps(f)&&(l=x),s.push([x,y])}let i=ja(e.allResponses,t,e.index,e.groupSequence),u=pg(s,i);return Z.createElement(bs.Group,{name:o,value:u??l,onChange:d=>{let c=s.find(x=>x[0]===d);if(c){let x=c[1],y="value"+Ja(x.type);a({[y]:x.value})}}},s.map(([d,c])=>Z.createElement(bs,{key:d,id:d,value:d,py:4,label:Z.createElement(xe,{property:n,propertyType:c.type,value:c.value})})))}function ug(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 dg(e){return!!e.extension?.some(o=>o.url==="http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl"&&o.valueCodeableConcept?.coding?.[0]?.code==="drop-down")}function cg(e){if(e.answerOption?.length===0)return{propertyName:"",data:[]};let o=e.answerOption[0],t=Ue({type:"QuestionnaireItemAnswerOption",value:o},"value"),r="value"+Ja(t.type),a=(e.answerOption??[]).map(n=>({value:Ds(n,r),label:Ds(n,r)}));return{propertyName:r,data:a}}function Ds(e,o){return $a(e.valueCoding)||e[o]?.toString()}function Xa(e){if(e)return e.type==="CodeableConcept"?e.value.coding[0].display:e.type==="Coding"?e.value.display:e.value.toString()}function Ka(e,o){let t=[];for(let r of e)r.linkId===o&&t.push(r),r.item&&(t=t.concat(Ka(r.item,o)));return t}function Ts(e){return Ue({type:"QuestionnaireItemAnswer",value:e},"value")}function ja(e,o,t=0,r=0){let n=Ka(e,o.linkId??"")[r]?.answer;return Ts(n?.[t]??{})}function mg(e,o,t=0){let a=Ka(e,o.linkId??"")[t]?.answer;return a?a.map(f=>Ts(f)).map(f=>$a(f?.value)||f?.value):[]}function pg(e,o){return e.find(t=>ng(t[1].value,o?.value))?.[0]}var Dg=Ig(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 i0(e){let o=P(),t=X(e.questionnaire),[r,a]=mr(!1),[n,f]=mr(),[s,l]=mr(),[i,u]=mr();function d(){u(void 0)}function c(){l(void 0)}return ks(()=>{o.requestSchema("Questionnaire").then(()=>a(!0)).catch(console.log)},[o]),ks(()=>(f(Ag(t??{resourceType:"Questionnaire"})),document.addEventListener("mouseover",d),document.addEventListener("click",c),()=>{document.removeEventListener("mouseover",d),document.removeEventListener("click",c)}),[t]),!r||!n?null:b.createElement("div",null,b.createElement($,{testid:"questionnaire-form",onSubmit:()=>e.onSubmit(n)},b.createElement(Bs,{item:n,selectedKey:s,setSelectedKey:l,hoverKey:i,setHoverKey:u,onChange:f}),b.createElement(xg,{type:"submit"},"Save")))}function Bs(e){let{classes:o,cx:t}=Dg(),r=e.item,a=e.item,n=bg(e.item),f=n||a.type==="group",s=a.linkId??"[untitled]",l=e.selectedKey===e.item.id,i=e.hoverKey===e.item.id,u=Pg();u.current=e.item;function d(g){N(g),e.setSelectedKey(e.item.id)}function c(g){N(g),e.setHoverKey(e.item.id)}function x(g){let M=u.current;e.onChange({...M,item:M.item?.map(Y=>Y.id===g.id?g:Y)})}function y(g){e.onChange({...e.item,item:[...e.item.item??[],g]})}function k(g){e.onChange({...e.item,item:e.item.item?.filter(M=>M!==g)})}function T(g,M){e.onChange({...u.current,[g]:M})}function B(g){e.onChange({...e.item,...g})}function A(g){e.onChange({...e.item,item:e.item.item?.map(M=>M===g?{...M,repeats:!M.repeats}:M)})}function I(g,M){let Y=wg(e.item.item,g,M);e.onChange({...e.item,item:Y})}let O=t(o.section,{[o.editing]:l,[o.hovering]:i&&!l});return b.createElement("div",{"data-testid":a.linkId,className:O,onClick:d,onMouseOver:c},b.createElement("div",{className:o.questionBody},l?b.createElement(b.Fragment,null,n&&b.createElement(Za,{size:"xl",defaultValue:r.title,onChange:g=>T("title",g.currentTarget.value)}),!n&&b.createElement(yg,{autosize:!0,minRows:2,defaultValue:a.text,onChange:g=>T("text",g.currentTarget.value)}),a.type==="reference"&&b.createElement(Bg,{item:a,onChange:B}),Cs(a)&&b.createElement(Tg,{item:a,onChange:g=>B(g)})):b.createElement(b.Fragment,null,r.title&&b.createElement(vg,null,r.title),a.text&&b.createElement("div",null,a.text),!f&&b.createElement(cr,{item:a,index:0,allResponses:[],onChange:()=>{}}))),a.item?.map((g,M)=>b.createElement("div",{key:g.id},b.createElement(Bs,{item:g,selectedKey:e.selectedKey,setSelectedKey:e.setSelectedKey,hoverKey:e.hoverKey,isFirst:M===0,isLast:M===(e.item.item??[]).length-1,setHoverKey:e.setHoverKey,onChange:x,onRemove:()=>k(g),onRepeatable:A,onMoveUp:()=>I(M,-1),onMoveDown:()=>I(M,1)}))),!f&&b.createElement("div",{className:o.topActions},l?b.createElement(b.Fragment,null,b.createElement(Za,{size:"xs",className:o.linkIdInput,defaultValue:a.linkId,onChange:g=>T("linkId",g.currentTarget.value)}),!f&&b.createElement(hg,{size:"xs",className:o.typeSelect,defaultValue:a.type,onChange:g=>T("type",g.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"}]})):b.createElement("div",null,s)),!n&&b.createElement(_a,{className:o.movementActions},b.createElement(_a,{className:o.columnAlignment},!e.isFirst&&b.createElement(Te,{href:"#",onClick:g=>{g.preventDefault(),e.onMoveUp&&e.onMoveUp()}},b.createElement(br,{"data-testid":"up-button",size:15,className:o.movementIcons})),!e.isLast&&b.createElement(Te,{href:"#",onClick:g=>{g.preventDefault(),e.onMoveDown&&e.onMoveDown()}},b.createElement(Sr,{"data-testid":"down-button",size:15,className:o.movementIcons})))),b.createElement("div",{className:o.bottomActions},f&&b.createElement(b.Fragment,null,b.createElement(Te,{href:"#",onClick:g=>{g.preventDefault(),y({id:mo(),linkId:on("q"),type:"string",text:"Question"})}},"Add item"),b.createElement(Te,{href:"#",onClick:g=>{g.preventDefault(),y({id:mo(),linkId:on("g"),type:"group",text:"Group"})}},"Add group")),n&&b.createElement(Te,{href:"#",onClick:g=>{g.preventDefault(),y(Mg())}},"Add Page"),l&&!n&&b.createElement(b.Fragment,null,b.createElement(Te,{href:"#",onClick:g=>{g.preventDefault(),e.onRepeatable&&e.onRepeatable(a)}},a.repeats?"Remove Repeatable":"Make Repeatable"),b.createElement(Te,{href:"#",onClick:g=>{g.preventDefault(),e.onRemove&&e.onRemove()}},"Remove"))))}function Tg(e){let o=Sg("QuestionnaireItemAnswerOption","value[x]"),t=e.item.answerOption??[];return b.createElement("div",null,e.item.answerValueSet!==void 0?b.createElement(Za,{placeholder:"Enter Value Set",defaultValue:e.item.answerValueSet,onChange:r=>e.onChange({...e.item,answerValueSet:r.target.value})}):b.createElement(kg,{options:t,property:o,item:e.item,onChange:e.onChange}),b.createElement(_a,{display:"flex"},b.createElement(Te,{href:"#",onClick:r=>{N(r),e.onChange({...e.item,answerValueSet:void 0,answerOption:[...t,{id:mo()}]})}},"Add choice"),b.createElement(Cg,{w:"lg"}),b.createElement(Te,{href:"#",onClick:r=>{N(r),e.onChange({...e.item,answerOption:[],answerValueSet:""})}},"Add value set")))}function kg(e){return b.createElement("div",null,e.options.map(o=>{let[t,r]=ve({type:"QuestionnaireItemAnswerOption",value:o},"value");return b.createElement("div",{key:o.id,style:{display:"flex",flexDirection:"row",justifyContent:"space-between",alignItems:"center",width:"80%"}},b.createElement("div",null,b.createElement(qe,{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})}})),b.createElement("div",null,b.createElement(Te,{href:"#",onClick:a=>{N(a),e.onChange({...e.item,answerOption:e.options.filter(n=>n.id!==o.id)})}},"Remove")))}))}function Bg(e){let o=ur(e.item)??[];return b.createElement(b.Fragment,null,o.map((t,r)=>b.createElement(gg,{key:`${t}-${r}`},b.createElement(Po,{name:"resourceType",placeholder:"Resource Type",defaultValue:t,onChange:a=>{e.onChange(dr(e.item,o.map(n=>n===t?a:n)))}}),b.createElement(Te,{href:"#",onClick:a=>{N(a),e.onChange(dr(e.item,o.filter(n=>n!==t)))}},"Remove"))),b.createElement(Te,{href:"#",onClick:t=>{N(t),e.onChange(dr(e.item,[...o,""]))}},"Add Resource Type"))}var Ya=1,en=1;function on(e){return e+Ya++}function mo(){return"id-"+en++}function Ag(e){return{...e,id:e.id||mo(),item:As(e.item)}}function As(e){if(e)return e.forEach(o=>{o.id?.match(/^id-\d+$/)&&(en=Math.max(en,parseInt(o.id.substring(3),10)+1)),o.linkId?.match(/^q\d+$/)&&(Ya=Math.max(Ya,parseInt(o.linkId.substring(1),10)+1))}),e.map(o=>({...o,id:o.id||mo(),item:As(o.item),answerOption:Fg(o.answerOption)}))}function Fg(e){if(e)return e.map(o=>({...o,id:o.id||mo()}))}function Mg(){return{id:mo(),linkId:on("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 wg(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 Os,Button as tn,Group as Og,Stack as Eg,Stepper as Fs,Title as Es}from"@mantine/core";import{createReference as Lg,getExtension as Rg,getReferenceString as Ls}from"@medplum/core";import Q,{useEffect as Ms,useState as Vo}from"react";function Rs(e){let o=P(),t=o.getProfile(),[r,a]=Vo(!1),n=X(e.questionnaire),[f,s]=Vo(),[l,i]=Vo(0);Ms(()=>{o.requestSchema("Questionnaire").then(()=>o.requestSchema("QuestionnaireResponse")).then(()=>a(!0)).catch(console.log)},[o]),Ms(()=>{s(n?Hg(n):void 0)},[n]);function u(y){let k=f?.item??[],B={resourceType:"QuestionnaireResponse",item:Vs(k,y)};s(B)}if(!r||!n)return null;let d=Ug(n),c=()=>i(y=>y+1),x=()=>i(y=>y-1);return Q.createElement($,{testid:"questionnaire-form",onSubmit:()=>{e.onSubmit&&f&&e.onSubmit({...f,questionnaire:Ls(n),subject:e.subject,source:Lg(t),authored:new Date().toISOString(),status:"completed"})}},n.title&&Q.createElement(Es,null,n.title),n.item&&Q.createElement(Ns,{items:n.item??[],allResponses:f?.item??[],onChange:u,renderPages:d>1,activePage:l}),Q.createElement(Ng,{activePage:l,numberOfPages:d,nextStep:c,prevStep:x,submitButtonText:e.submitButtonText}))}function Ns(e){let[o,t]=Vo(an(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?Q.createElement(Fs.Step,{label:n.text,key:n.linkId},Q.createElement(ws,{key:`${n.linkId}-${f}`,item:n,index:f,allResponses:e.allResponses,currentResponseItems:o,groupSequence:e.groupSequence,setResponseItem:r})):Q.createElement(ws,{key:`${n.linkId}-${f}`,item:n,index:f,groupSequence:e.groupSequence,allResponses:e.allResponses,currentResponseItems:o,setResponseItem:r}));return e.renderPages?Q.createElement(Fs,{active:e.activePage??0,allowNextStepsSelect:!1,p:6},a):Q.createElement(Eg,null,a)}function ws(e){return ys(e.item,e.allResponses)?e.item.type==="display"?Q.createElement("p",{key:e.item.linkId},e.item.text):e.item.type==="group"?Q.createElement(rn,{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"?Q.createElement(rn,{item:e.item,allResponses:e.allResponses,currentResponseItems:e.currentResponseItems,groupSequence:e.groupSequence,onChange:o=>e.setResponseItem(o.id,o)}):Q.createElement(Se,{key:e.item.linkId,htmlFor:e.item.linkId,title:e.item.text,withAsterisk:e.item.required},Q.createElement(rn,{item:e.item,allResponses:e.allResponses,currentResponseItems:e.currentResponseItems,groupSequence:e.groupSequence,onChange:o=>e.setResponseItem(o.id,o)})):null}function rn(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:Wg(f,n),linkId:o.linkId,text:o.text,item:r})}return o.type==="group"?Q.createElement(Qg,{key:e.item.linkId,text:o.text??"",item:o??[],allResponses:e.allResponses,onChange:t}):Q.createElement(zg,{item:e.item,key:e.item.linkId},({index:r})=>Q.createElement(cr,{...e,index:r}))}function Ng(e){let o=e.activePage>0,t=e.activePage<e.numberOfPages-1,r=e.activePage===e.numberOfPages-1;return Q.createElement(Og,{position:"right",mt:"xl",spacing:"xs"},o&&Q.createElement(tn,{onClick:e.prevStep},"Back"),t&&Q.createElement(tn,{onClick:a=>{a.currentTarget.closest("form").reportValidity()&&e.nextStep()}},"Next"),r&&Q.createElement(tn,{type:"submit"},e.submitButtonText??"Submit"))}function Hg(e){return{resourceType:"QuestionnaireResponse",questionnaire:Ls(e),item:an(e.item)}}function an(e){return e?.map(Vg)??[]}function Vg(e){return{id:Hs(),linkId:e.linkId,text:e.text,item:an(e.item),answer:e.initial?.map(Gg)??[]}}var qg=1;function Hs(){return"id-"+qg++}function Gg(e){return{...e}}function Ug(e){let o=e?.item?.[0];return o&&Rg(o,"http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl")?.valueCodeableConcept?.coding?.[0]?.code==="page"?e.item.length:1}function Qg(e){let[o,t]=Vo(Xg(e.item,e.allResponses)),r=e.item;return Q.createElement(Q.Fragment,null,[...Array(o)].map((a,n)=>Q.createElement("div",{key:n},e.text&&Q.createElement(Es,{order:3,mb:"md"},e.text),Q.createElement(Ns,{items:r.item??[],allResponses:e.allResponses,groupSequence:n,onChange:f=>e.onChange(f,n)}))),e.item.repeats&&Q.createElement(Os,{onClick:()=>t(a=>a+1)},"Add Group"))}function zg(e){let[o,t]=Vo(1),r=e.item?.repeats&&e.item.type!=="choice"&&e.item.type!=="open-choice";return Q.createElement(Q.Fragment,null,[...Array(o)].map((a,n)=>Q.createElement(Q.Fragment,{key:`${e.item.linkId}-${n}`},e.children({index:n}))),r&&Q.createElement(Os,{onClick:()=>t(a=>a+1)},"Add Item"))}function Wg(e,o){return e.length===0||e.length<o+1?Hs():e[o].id}function Xg(e,o){let t=o.filter(r=>r.linkId===e.linkId).length;return t>0?t:1}function Jg(e,o){let t=Vs(e.item??[],o.item??[]);return{...o,item:t,answer:o.answer&&o.answer.length>0?o.answer:e.answer}}function $g(e,o){let t=[],r=Math.max(e.length,o.length);for(let a=0;a<r;a++)e[a]&&o[a]?t.push(Jg(e[a],o[a])):o[a]&&t.push(o[a]);return t}function Vs(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($g(a,n))}return t}import{ActionIcon as pr,Button as Kg,createStyles as jg,Divider as _g,Group as dt,NativeSelect as nn,Stack as xr,Text as Zg,TextInput as Yg}from"@mantine/core";import{formatRange as qs,getCodeBySystem as eh}from"@medplum/core";import W,{useEffect as oh,useState as fn}from"react";var th=jg(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"}})),rh=["gender","age","gestationalAge","context","appliesTo","category"],ah={definition:{resourceType:"ObservationDefinition"},onSubmit:()=>{}};function A0(e){e=Object.assign(ah,e);let o=e.definition,[t,r]=fn([]),[a,n]=fn(1),[f,s]=fn(1);return oh(()=>{let y=lh(o,s);r(sh(y.qualifiedInterval||[],n))},[o]),W.createElement($,{testid:"reference-range-editor",onSubmit:l},W.createElement(xr,null,t.map(y=>W.createElement(nh,{unit:uh(o.quantitativeDetails?.unit),onChange:d,onAdd:c,onRemove:x,onRemoveGroup:u,key:`group-${y.id}`,intervalGroup:y}))),W.createElement(pr,{title:"Add Group",size:"sm",onClick:y=>{N(y),i({id:`group-id-${a}`,filters:{},intervals:[]}),n(k=>k+1)}},W.createElement(po,null)),W.createElement(dt,{position:"right"},W.createElement(Kg,{type:"submit"},"Save")));function l(){let y=t.flatMap(k=>k.intervals).filter(k=>!dh(k));e.onSubmit({...o,qualifiedInterval:y})}function i(y){r(k=>[...k,y])}function u(y){r(k=>k.filter(T=>T.id!==y.id))}function d(y,k){r(T=>{T=[...T];let B=T.find(I=>I.id===y),A=B?.intervals.findIndex(I=>I.id===k.id);return A!==void 0&&B?.intervals[A]&&(B.intervals[A]=k),T})}function c(y,k){k.id===void 0&&(k.id=`id-${f}`,s(T=>T+1)),r(T=>{T=[...T];let B=T.findIndex(A=>A.id===y);if(B!==-1){let A={...T[B]};k={...k,...A.filters},A.intervals=[...A.intervals,k],T[B]=A}return T})}function x(y,k){r(T=>{T=[...T];let B=T.find(A=>A.id===y);return B&&(B.intervals=B.intervals.filter(A=>A.id!==k.id)),T})}}function nh(e){let{intervalGroup:o,unit:t}=e,{classes:r}=th();return W.createElement(Ke,{"data-testid":o.id,className:r.section},W.createElement(xr,{spacing:"lg"},W.createElement(dt,{position:"right"},W.createElement(pr,{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)}},W.createElement(We,null))),W.createElement(fh,{intervalGroup:o,onChange:e.onChange}),W.createElement(_g,null),o.intervals.map(a=>W.createElement(xr,{key:`interval-${a.id}`,spacing:"xs"},W.createElement(dt,null,W.createElement(Yg,{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()})}}),W.createElement(pr,{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)}},W.createElement(We,null))),W.createElement(ot,{onChange:n=>{e.onChange(o.id,{...a,range:n})},key:`range-${a.id}`,name:`range-${a.id}`,defaultValue:a.range}))),W.createElement(pr,{title:"Add Interval",size:"sm",onClick:a=>{N(a),e.onAdd(o.id,{range:{low:{unit:t},high:{unit:t}}})}},W.createElement(po,null))))}function fh(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 W.createElement(xr,{style:{maxWidth:"50%"}},W.createElement(dt,null,W.createElement(nn,{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})}}})),W.createElement(dt,{spacing:"xs"},W.createElement(Zg,{component:"label",htmlFor:`div-age-${o.id}`},"Age:"),W.createElement("div",{id:`div-age-${o.id}`},W.createElement(ot,{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})}}))),W.createElement(nn,{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"}]}})}}}),W.createElement(nn,{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 lh(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 sh(e,o){let t=1,r={};for(let a of e){let n=ih(a);n in r||(r[n]={id:`group-id-${t++}`,filters:Object.fromEntries(rh.map(f=>[f,a[f]])),intervals:[]}),r[n].intervals.push(a)}return o(t),Object.values(r)}function ih(e){return[`gender=${e.gender}`,`age=${qs(e.age)}`,`gestationalAge=${qs(e.gestationalAge)}`,`context=${e.context?.text}`,`appliesTo=${e.appliesTo?.map(t=>t.text).join("+")}`,`category=${e.category}`].join(":")}function uh(e){return e&&(eh(e,"http://unitsofmeasure.org")||e.text)}function dh(e){return e.range?.low?.value===void 0&&e.range?.high?.value===void 0}import{Button as Gs,Grid as Ir,Text as ch}from"@mantine/core";import{formatDateTime as mh,getReferenceString as ph}from"@medplum/core";import ge,{useEffect as xh,useState as Us}from"react";function H0(e){let o=P(),t=X(e.value),[r,a]=Us(!1),[n,f]=Us();if(xh(()=>{t&&!r&&(o.executeBatch(s(t)).then(f).catch(console.log),a(!0))},[o,t,r]),!t||!n)return null;return ge.createElement(Ir,null,t.action?.map((i,u)=>{let d=i.resource&&l(i.resource),c=d?.input?.[0]?.valueReference,x=d?.output?.[0]?.valueReference;return ge.createElement(ge.Fragment,{key:`action-${u}`},ge.createElement(Ir.Col,{span:1,p:"md"},d?.status==="completed"?ge.createElement(Fr,null):ge.createElement(Jr,{color:"gray"})),ge.createElement(Ir.Col,{span:9,p:"xs"},ge.createElement(ch,{weight:500},i.title),i.description&&ge.createElement("div",null,i.description),ge.createElement("div",null,"Last edited by\xA0",ge.createElement(Ee,{value:d?.meta?.author}),"\xA0on\xA0",mh(d?.meta?.lastUpdated)),ge.createElement("div",null,"Status: ",ge.createElement($t,{status:d?.status||"unknown"}))),ge.createElement(Ir.Col,{span:2,p:"md"},c&&!x&&ge.createElement(Gs,{onClick:()=>e.onStart(d,c)},"Start"),c&&x&&ge.createElement(Gs,{onClick:()=>e.onEdit(d,c,x)},"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===ph(u.resource))return u.resource}}import{createStyles as Sh}from"@mantine/core";import ye,{useEffect as bh,useState as Ph}from"react";import{stringify as Ch}from"@medplum/core";function gr(e,o){let t=Ih(e,o);return gh(t,e,o)}function Ih(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,x=s[d],y=s[c],k,T=0;i===-l||i!==l&&y.i<x.i?(T=x.i,k=x):(T=y.i+1,k=y),s[c]=void 0;let B=T-i,A={i:T,j:B,prev:hh(k),snake:!1};for(;T<t&&B<r&&e[T]===o[B];)T++,B++;if(T>A.i&&(A={i:T,j:B,prev:A,snake:!0}),s[u]=A,T>=t&&B>=r)return s[u]}s[f+l-1]=void 0}}function gh(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 hh(e){return e&&!e.snake&&e.prev?e.prev:e}function Qs(e){let o=e.entry.filter(r=>!!r.resource).map(r=>({meta:r.resource?.meta,lines:Ch(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 yh(t,o),vh(t),t}function yh(e,o){for(let t=1;t<o.length;t++){let r=gr(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 vh(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}}function zs(e,o){return`/${e.resourceType}/${e.id}/_history/${o}`}function Ws(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`}var Dh=Sh(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 Z0(e){let{classes:o}=Dh(),t=P(),[r,a]=Ph(e.history);if(bh(()=>{!e.history&&e.resourceType&&e.id&&t.readHistory(e.resourceType,e.id).then(a).catch(console.log)},[t,e.history,e.resourceType,e.id]),!r)return ye.createElement("div",null,"Loading...");let n=r.entry?.[0]?.resource;if(!n)return null;let f=Qs(r);return ye.createElement("div",{className:o.container},ye.createElement("table",{className:o.root},ye.createElement("tbody",null,f.map((s,l)=>ye.createElement("tr",{key:"row-"+l,className:s.span>0?o.startRow:o.normalRow},s.span>0&&ye.createElement(ye.Fragment,null,ye.createElement("td",{className:o.author,rowSpan:s.span},ye.createElement(_e,{value:s.meta.author,link:!0})),ye.createElement("td",{className:o.dateTime,rowSpan:s.span},ye.createElement(se,{to:zs(n,s.meta.versionId)},Ws(s.meta.lastUpdated)))),ye.createElement("td",{className:o.lineNumber},l+1),ye.createElement("td",{className:o.line},ye.createElement("pre",{className:o.pre},s.value)))))))}import{createStyles as Th}from"@mantine/core";import{stringify as Xs}from"@medplum/core";import eo from"react";var kh=Th(e=>({removed:{color:e.colors.red[7],textDecoration:"line-through"},added:{color:e.colors.green[7]}}));function n1(e){let o=e.original,t=e.revised;e.ignoreMeta&&(o={...o,meta:void 0},t={...t,meta:void 0});let r=Xs(o,!0).match(/[^\r\n]+/g),a=Xs(t,!0).match(/[^\r\n]+/g),n=gr(r,a);return eo.createElement("pre",{style:{color:"gray"}},n.map((f,s)=>eo.createElement(Bh,{key:"delta"+s,delta:f})))}function Bh(e){let{classes:o}=kh();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{Button as Js,Group as Ah,Stack as Fh,TextInput as $s}from"@mantine/core";import{deepClone as Mh}from"@medplum/core";import Me,{useEffect as wh,useState as Ks}from"react";function m1(e){let o=P(),t=X(e.defaultValue),[r,a]=Ks(!1),[n,f]=Ks();return wh(()=>{t&&(f(Mh(t)),o.requestSchema(t.resourceType).then(()=>a(!0)).catch(console.log))},[o,t]),!r||!n?Me.createElement("div",null,"Loading..."):Me.createElement("form",{noValidate:!0,autoComplete:"off",onSubmit:s=>{s.preventDefault(),e.onSubmit&&e.onSubmit(n)}},Me.createElement(Fh,{mb:"xl"},Me.createElement(Se,{title:"Resource Type",htmlFor:"resourceType",outcome:e.outcome},Me.createElement($s,{name:"resourceType",defaultValue:n.resourceType,disabled:!0})),Me.createElement(Se,{title:"ID",htmlFor:"id",outcome:e.outcome},Me.createElement($s,{name:"id",defaultValue:n.id,disabled:!0}))),Me.createElement(tt,{typeName:n.resourceType,defaultValue:n,outcome:e.outcome,onChange:f}),Me.createElement(Ah,{position:"right",mt:"xl"},Me.createElement(Js,{type:"submit"},"OK"),e.onDelete&&Me.createElement(Js,{variant:"outline",color:"red",type:"button",onClick:()=>{e.onDelete(n)}},"Delete")))}import{Table as Oh}from"@mantine/core";import{formatDateTime as Eh,normalizeErrorString as Lh}from"@medplum/core";import ce,{useEffect as Rh,useState as Nh}from"react";function v1(e){let o=P(),[t,r]=Nh(e.history);return Rh(()=>{!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(Oh,{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(Hh,{key:"entry-"+n,entry:a})))):ce.createElement("div",null,"Loading...")}function Hh(e){let{response:o,resource:t}=e.entry;return t?ce.createElement("tr",null,ce.createElement("td",null,ce.createElement(_e,{value:t.meta?.author,link:!0})),ce.createElement("td",null,Eh(t.meta?.lastUpdated)),ce.createElement("td",null,ce.createElement(se,{to:Vh(t)},t.meta?.versionId))):ce.createElement("tr",null,ce.createElement("td",{colSpan:3},Lh(o?.outcome)))}function Vh(e){return`/${e.resourceType}/${e.id}/_history/${e.meta?.versionId}`}import{Button as qh,createStyles as Gh,Stack as Uh,Text as Qh}from"@mantine/core";import{getReferenceString as zh,isReference as Wh}from"@medplum/core";import ee,{useState as hr}from"react";var Xh=Gh(e=>({container:{display:"flex",minHeight:400},info:{minWidth:300,padding:20,borderRight:`1px solid ${e.colors.gray[3]}`},selection:{minWidth:300,padding:20}}));function w1(e){let{classes:o}=Xh(),t=X(e.schedule),r=X(e.questionnaire),[a,n]=hr(Jt()),[f,s]=hr(),[l,i]=hr(),[u,d]=hr(),[c]=mn("Slot",new URLSearchParams([["_count",(30*24).toString()],["schedule",Wh(e.schedule)?e.schedule.reference:zh(e.schedule)],["start","gt"+Jh(a)],["start","lt"+$h(a)]]));if(!t||!c||!r)return null;let x=t.actor?.[0];return ee.createElement("div",{className:o.container,"data-testid":"scheduler"},ee.createElement("div",{className:o.info},x&&ee.createElement(he,{value:x,size:"xl"}),x&&ee.createElement(Qh,{size:"xl",weight:500},ee.createElement(Ee,{value:x})),ee.createElement("p",null,"1 hour"),f&&ee.createElement("p",null,f.toLocaleDateString()),l&&ee.createElement("p",null,js(new Date(l.start)))),ee.createElement("div",{className:o.selection},!f&&ee.createElement("div",null,ee.createElement("h3",null,"Select date"),ee.createElement(il,{slots:c,onChangeMonth:n,onClick:s})),f&&!l&&ee.createElement("div",null,ee.createElement("h3",null,"Select time"),ee.createElement(Uh,null,c.map(y=>{let k=new Date(y.start);return k.getTime()>f.getTime()&&k.getTime()<f.getTime()+24*3600*1e3&&ee.createElement("div",{key:y.id},ee.createElement(qh,{variant:"outline",style:{width:150},onClick:()=>i(y)},js(k)))}))),f&&l&&!u&&ee.createElement(Rs,{questionnaire:r,submitButtonText:"Next",onSubmit:d}),f&&l&&u&&ee.createElement("div",null,ee.createElement("h3",null,"You're all set!"),ee.createElement("p",null,"Check your email for a calendar invite."))))}function Jh(e){return _s(e.getTime())}function $h(e){return _s(e.getTime()+31*24*60*60*1e3)}function _s(e){let o=new Date(Math.max(Date.now(),e));return o.setHours(0,0,0,0),o.toISOString()}function js(e){return e.toLocaleTimeString([],{hour:"numeric",minute:"2-digit"})}import{createReference as Cr}from"@medplum/core";import Kh from"react";function V1(e){return Kh.createElement(Ye,{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:[Cr(o)],subject:o.subject,sender:Cr(t),sent:new Date().toISOString(),payload:[{contentString:r}]}),createMedia:(o,t,r)=>({resourceType:"Media",status:"completed",basedOn:[Cr(o)],subject:o.subject,operator:Cr(t),issued:new Date().toISOString(),content:r})})}export{xn as AddressDisplay,Cn as AddressInput,yn as AnnotationInput,Vb as AppShell,So as AsyncAutocomplete,Xn as AttachmentArrayDisplay,$n as AttachmentArrayInput,Do as AttachmentButton,Oe as AttachmentDisplay,bt as AttachmentInput,Zo as BackboneElementDisplay,tt as BackboneElementInput,il as CalendarInput,Ht as CheckboxFormSection,St as CodeInput,Ao as CodeableConceptDisplay,Ef as CodeableConceptInput,Pf as CodingDisplay,Vt as CodingInput,Tf as ContactDetailDisplay,Rf as ContactDetailInput,Et as ContactPointDisplay,Gt as ContactPointInput,Ke as Container,Fe as DateTimeInput,hM as DefaultResourceTimeline,yf as DescriptionList,vf as DescriptionListEntry,Da as DiagnosticReportDisplay,Pt as Document,sp as ElementDefinitionInputSelector,nl as ElementDefinitionTypeInput,DM as EncounterTimeline,ho as ErrorBoundary,LI as FhirPathTable,$ as Form,Se as FormSection,qn as Header,Ct as HumanNameDisplay,Gf as HumanNameInput,kf as IdentifierDisplay,Qf as IdentifierInput,Zr as Loading,je as Logo,se as MedplumLink,Zh as MedplumProvider,iO as MemoizedFhirPathTable,eO as MemoizedSearchControl,Af as MoneyDisplay,zf as MoneyInput,Wn as Navbar,Gp as ObservationTable,Bo as OperationOutcomeAlert,ko as Panel,IO as PatientTimeline,wO as PlanDefinitionBuilder,_o as QuantityDisplay,Pe as QuantityInput,i0 as QuestionnaireBuilder,Rs as QuestionnaireForm,ir as QuestionnaireItemType,rn as QuestionnaireRepeatWrapper,Lt as RangeDisplay,ot as RangeInput,lo as ReferenceDisplay,wo as ReferenceInput,A0 as ReferenceRangeEditor,nh as ReferenceRangeGroupEditor,xD as RegisterForm,H0 as RequestGroupDisplay,Of as ResourceArrayDisplay,Yf as ResourceArrayInput,he as ResourceAvatar,_e as ResourceBadge,Z0 as ResourceBlame,n1 as ResourceDiff,m1 as ResourceForm,v1 as ResourceHistoryTable,zt as ResourceInput,Ee as ResourceName,xe as ResourcePropertyDisplay,qe as ResourcePropertyInput,Ta as ResourceTable,Ye as ResourceTimeline,w1 as Scheduler,Va as SearchChangeEvent,co as SearchClickEvent,DI as SearchControl,Kl as SearchFieldEditor,os as SearchFilterEditor,qa as SearchLoadEvent,V1 as ServiceRequestTimeline,cT as SignInForm,$t as StatusBadge,Sl as Timeline,Ze as TimelineItem,al as TimingInput,Ma as addDateFilterBetween,UM as addField,Ro as addFilter,Vl as addLastMonthFilter,wa as addMissingFilter,Gl as addNextMonthFilter,ql as addThisMonthFilter,Nl as addTodayFilter,Hl as addTomorrowFilter,Ul as addYearToDateFilter,Rl as addYesterdayFilter,Ce as buildFieldNameString,GM as clearFilters,er as clearFiltersOnField,Hf as convertIsoToLocal,Vf as convertLocalToIso,kt as createScriptTag,Ll as deleteFilter,pe as getErrorsForInput,Dt as getIssuesForExpression,vs as getNewMultiSelectValues,nt as getOpString,ur as getQuestionnaireItemReferenceTargetTypes,ef as getRecaptcha,Xl as getSearchOperators,zl as getSortField,Yn as initRecaptcha,Cs as isChoiceQuestion,ys as isQuestionEnabled,Wl as isSortDescending,Gn as parseForm,dn as reactContext,Jl as renderValue,at as setFilters,Lx as setOffset,Ql as setPage,dr as setQuestionnaireItemReferenceTargetTypes,Oa as setSort,Dl as sortByDateAndPriority,QM as toggleSort,P as useMedplum,Uo as useMedplumContext,Qe as useMedplumNavigate,pt as useMedplumProfile,X as useResource,rC as useSearch,aC as useSearchOne,mn as useSearchResources};
64
+ }`.replace(/\s+/g," ")}function Su(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),Pu(bu(t),o).slice(0,5)}function bu(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 Pu(e,o){return e.sort((t,r)=>Un(r,o)-Un(t,o))}function Un(e,o){let t=0;if(e.identifier)for(let r of e.identifier)t=Math.max(t,Qn(r.value,o));if(e.resourceType==="Patient"&&e.name)for(let r of e.name)t=Math.max(t,Qn(mu(r),o));return t}function Qn(e,o){if(!e)return 0;let t=e.toLowerCase().indexOf(o.toLowerCase());return t<0?0:100-t}var Fu=Tu(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 $n(e){let o=Xo(),{medplum:t,profile:r,navigate:a}=o,n=t.getLogins(),{classes:f,cx:s}=Fu(),[l,i]=Mu(!1);return G.createElement(ku,{height:60,p:8,style:{zIndex:101}},G.createElement(Pt,{position:"apart"},G.createElement(Pt,{spacing:"xs"},G.createElement(Xn,{className:f.logoButton,onClick:e.navbarToggle},e.logo),!e.headerSearchDisabled&&G.createElement(Wn,{pathname:e.pathname,searchParams:e.searchParams})),G.createElement(Ve,{width:260,shadow:"xl",position:"bottom-end",transitionProps:{transition:"pop-top-right"},opened:l,onClose:()=>i(!1)},G.createElement(Ve.Target,null,G.createElement(Xn,{className:s(f.user,{[f.userActive]:l}),onClick:()=>i(u=>!u)},G.createElement(Pt,{spacing:7},G.createElement(ge,{value:r,radius:"xl",size:24}),G.createElement(Yo,{size:"sm",className:f.userName},Au(r?.name?.[0])),G.createElement(Rr,{size:12,stroke:1.5})))),G.createElement(Ve.Dropdown,null,G.createElement(Bu,{align:"center",p:"xl"},G.createElement(ge,{size:"xl",radius:100,value:o.profile}),G.createElement(St,{value:o.profile?.name?.[0]}),G.createElement(Yo,{color:"dimmed",size:"xs"},t.getActiveLogin()?.project.display)),n.length>1&&G.createElement(Ve.Divider,null),n.map(u=>u.profile.reference!==Jn(o.profile)&&G.createElement(Ve.Item,{key:u.profile.reference,onClick:()=>{t.setActiveLogin(u).then(()=>window.location.reload()).catch(console.log)}},G.createElement(Pt,null,G.createElement(Du,{radius:"xl"}),G.createElement("div",{style:{flex:1}},G.createElement(Yo,{size:"sm",weight:500},u.profile.display),G.createElement(Yo,{color:"dimmed",size:"xs"},u.project.display))))),G.createElement(Ve.Divider,null),G.createElement(Ve.Item,{icon:G.createElement(Yr,{size:14,stroke:1.5}),onClick:()=>a("/signin")},"Add another account"),G.createElement(Ve.Item,{icon:G.createElement(yo,{size:14,stroke:1.5}),onClick:()=>a(`/${Jn(r)}`)},"Account settings"),G.createElement(Ve.Item,{icon:G.createElement(Wr,{size:14,stroke:1.5}),onClick:async()=>{await t.signOut(),a("/signin")}},"Sign out"),G.createElement(Yo,{size:"xs",color:"dimmed",align:"center"},e.version)))))}import{Button as td,createStyles as rd,Navbar as fa,ScrollArea as ad,Space as nd,Text as fd}from"@mantine/core";import fe,{useState as ld}from"react";import{Button as Lu,Group as Ru,Modal as Nu,NativeSelect as Hu,Stack as Vu,TextInput as qu}from"@mantine/core";import{showNotification as jn}from"@mantine/notifications";import{deepClone as Gu,normalizeErrorString as Uu}from"@medplum/core";import Je from"react";import Eu from"react";function Kn(e){let o={};for(let t of Array.from(e.elements))t instanceof HTMLInputElement?wu(o,t):t instanceof HTMLTextAreaElement?o[t.name]=t.value:t instanceof HTMLSelectElement&&Ou(o,t);return o}function wu(e,o){o.disabled||(o.type==="checkbox"||o.type==="radio")&&!o.checked||(e[o.name]=o.value)}function Ou(e,o){e[o.name]=o.value}function $(e){return Eu.createElement("form",{style:e.style,"data-testid":e.testid,onSubmit:o=>{o.preventDefault();let t=Kn(o.target);e.onSubmit&&e.onSubmit(t)}},e.children)}function _n(e){let o=P(),t=o.getUserConfiguration();function r(a){let{menuname:n,bookmarkname:f}=a,s=`${e.pathname}?${e.searchParams.toString()}`,l=Gu(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"}),jn({color:"green",message:"Success"}),e.onOk()}).catch(u=>{jn({color:"red",message:Uu(u)})})}return Je.createElement(Nu,{title:"Add Bookmark",closeButtonProps:{"aria-label":"Close"},opened:e.visible,onClose:e.onCancel},Je.createElement($,{onSubmit:r},Je.createElement(Vu,null,Je.createElement(Qu,{config:t}),Je.createElement(qu,{label:"Bookmark Name",type:"text",name:"bookmarkname",placeholder:"Bookmark Name",withAsterisk:!0}),Je.createElement(Ru,{position:"right"},Je.createElement(Lu,{mt:"sm",type:"submit"},"OK")))))}function Qu(e){function o(r){return r?.menu?.map(a=>a.title)}let t=o(e.config);return Je.createElement(Hu,{name:"menuname",defaultValue:t[0],label:"Select Menu Option",placeholder:"Menu",data:t,withAsterisk:!0})}import Yu,{useCallback as ed,useState as od}from"react";import Ku,{useState as ju}from"react";import zu,{useCallback as Wu}from"react";function na(e){return typeof e.code=="string"?e.code:JSON.stringify(e)}function Xu(e){return typeof e.display=="string"?e.display:na(e)}function Ju(e){return{value:na(e),label:Xu(e),resource:e}}function $u(e){return{code:e,display:e}}function To(e){let o=P(),{binding:t,creatable:r,clearable:a,...n}=e,f=Wu(async(s,l)=>{if(!t)return[];let u=(await o.searchValueSet(t,s,{signal:l})).expansion?.contains,c=[];for(let d of u)d.code&&!c.some(x=>x.code===d.code)&&c.push(d);return c},[o,t]);return zu.createElement(Do,{...n,creatable:r??!0,clearable:a??!0,toKey:na,toOption:Ju,loadOptions:f,onCreate:$u,getCreateLabel:r===!1?void 0:s=>`+ Create ${s}`})}function Dt(e){let[o,t]=ju(e.defaultValue);function r(a){let n=a[0],f=Zu(n);t(f),e.onChange&&e.onChange(f)}return Ku.createElement(To,{binding:e.binding,name:e.name,placeholder:e.placeholder,defaultValue:_u(o),onChange:r,creatable:e.creatable,maxSelectedValues:e.maxSelectedValues??1,clearSearchOnChange:e.clearSearchOnChange,clearable:e.clearable})}function _u(e){return e?{code:e}:void 0}function Zu(e){return e?.code}function ko(e){let[o,t]=od(e.defaultValue),r=e.onChange,a=ed(n=>{t(n),r&&r(n)},[r]);return Yu.createElement(Dt,{"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 Zn=rd(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 Yn(e){let{classes:o}=Zn(),t=Qe(),r=ud(e.pathname,e.searchParams,e.menus),[a,n]=ld(!1);function f(l,i){l.stopPropagation(),l.preventDefault(),t(i),window.innerWidth<768&&e.closeNavbar()}function s(l){l&&t(`/${l}`)}return fe.createElement(fe.Fragment,null,fe.createElement(fa,{width:{sm:250},p:"xs"},fe.createElement(ad,null,!e.resourceTypeSearchDisabled&&fe.createElement(fa.Section,{mb:"sm"},fe.createElement(ko,{key:window.location.pathname,name:"resourceType",placeholder:"Resource Type",onChange:l=>s(l)})),fe.createElement(fa.Section,{grow:!0},e.menus?.map(l=>fe.createElement(fe.Fragment,{key:`menu-${l.title}`},fe.createElement(fd,{className:o.menuTitle},l.title),l.links?.map(i=>fe.createElement(sd,{key:i.href,to:i.href,active:i.href===r?.href,onClick:u=>f(u,i.href)},fe.createElement(id,{to:i.href,icon:i.icon}),fe.createElement("span",null,i.label))))),e.displayAddBookmark&&fe.createElement(td,{variant:"subtle",size:"xs",mt:"xl",leftIcon:fe.createElement(Kr,{size:"0.75rem"}),onClick:()=>n(!0)},"Add Bookmark")))),e.pathname&&e.searchParams&&fe.createElement(_n,{pathname:e.pathname,searchParams:e.searchParams,visible:a,onOk:()=>n(!1),onCancel:()=>n(!1)}))}function sd(e){let{classes:o,cx:t}=Zn();return fe.createElement(le,{onClick:e.onClick,to:e.to,className:t(o.link,{[o.linkActive]:e.active})},e.children)}function id(e){return e.icon?e.icon:fe.createElement(nd,{w:30})}function ud(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=dd(e,o,f.href);s>a&&(a=s,r=f)}return r}function dd(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 pP(e){let o=md(),[t,r]=gd(localStorage.navbarOpen==="true"),a=P(),n=gt();Id(()=>{function i(){pd({color:"red",message:"No connection to server",autoClose:!1})}return a.addEventListener("offline",i),()=>a.removeEventListener("offline",i)},[a]);function f(i){localStorage.navbarOpen=i.toString(),r(i)}function s(){f(!1)}function l(){f(!t)}return a.isLoading()?fo.createElement(ra,null):fo.createElement(cd,{styles:{main:{background:o.colorScheme==="dark"?o.colors.dark[8]:o.colors.gray[0]}},padding:0,fixed:!0,header:n&&fo.createElement($n,{pathname:e.pathname,searchParams:e.searchParams,headerSearchDisabled:e.headerSearchDisabled,logo:e.logo,version:e.version,navbarToggle:l}),navbar:n&&t?fo.createElement(Yn,{pathname:e.pathname,searchParams:e.searchParams,menus:e.menus,closeNavbar:s,displayAddBookmark:e.displayAddBookmark,resourceTypeSearchDisabled:e.resourceTypeSearchDisabled}):void 0},fo.createElement(vo,{key:`${e.pathname}?${e.searchParams?.toString()}`},fo.createElement(xd,{fallback:fo.createElement(ra,null)},e.children)))}import la from"react";import{Anchor as hd}from"@mantine/core";import $e from"react";function Oe(e){let{contentType:o,url:t,title:r}=e.value??{};return t?$e.createElement("div",{"data-testid":"attachment-display"},o?.startsWith("image/")&&$e.createElement("img",{"data-testid":"attachment-image",style:{maxWidth:e.maxWidth},src:t,alt:r}),o?.startsWith("video/")&&$e.createElement("video",{"data-testid":"attachment-video",style:{maxWidth:e.maxWidth},controls:!0},$e.createElement("source",{type:o,src:t})),o==="application/pdf"&&$e.createElement("div",{"data-testid":"attachment-pdf",style:{maxWidth:e.maxWidth,minHeight:400}},$e.createElement("iframe",{width:"100%",height:"400",src:t+"#navpanes=0",allowFullScreen:!0,frameBorder:0,seamless:!0})),$e.createElement("div",{"data-testid":"download-link",style:{padding:"2px 16px 16px 16px"}},$e.createElement(hd,{href:t,"data-testid":"attachment-details",target:"_blank",rel:"noopener noreferrer",download:Cd(r)},r||"Download"))):null}function Cd(e){return e?.includes(".")?e:void 0}function ef(e){return la.createElement("div",null,e.values?.map((o,t)=>la.createElement("div",{key:"attatchment-"+t},la.createElement(Oe,{value:o,maxWidth:e.maxWidth}))))}import{ActionIcon as of}from"@mantine/core";import se,{useRef as Sd,useState as bd}from"react";import sa,{useRef as yd}from"react";import{normalizeOperationOutcome as vd}from"@medplum/core";function Bo(e){let o=P(),t=yd(null);function r(f){R(f),t.current?.click()}function a(f){R(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=>{e.onUploadError&&e.onUploadError(vd(u))})}return sa.createElement(sa.Fragment,null,sa.createElement("input",{type:"file","data-testid":"upload-file-input",style:{display:"none"},ref:t,onChange:f=>a(f)}),e.children({onClick:r}))}function tf(e){let[o,t]=bd(e.defaultValue??[]),r=Sd();r.current=o;function a(n){t(n),e.onChange&&e.onChange(n)}return se.createElement("table",{style:{width:"100%"}},se.createElement("colgroup",null,se.createElement("col",{width:"97%"}),se.createElement("col",{width:"3%"})),se.createElement("tbody",null,o.map((n,f)=>se.createElement("tr",{key:`${f}-${o.length}`},se.createElement("td",null,se.createElement(Oe,{value:n,maxWidth:200})),se.createElement("td",null,se.createElement(of,{title:"Remove",size:"sm",onClick:s=>{R(s);let l=o.slice();l.splice(f,1),a(l)}},se.createElement(We,null))))),se.createElement("tr",null,se.createElement("td",null),se.createElement("td",null,se.createElement(Bo,{onUpload:n=>{a([...r.current,n])}},n=>se.createElement(of,{...n,title:"Add",size:"sm",color:"green"},se.createElement(Ko,{size:16})))))))}import{Button as rf}from"@mantine/core";import Ao,{useState as Pd}from"react";function Tt(e){let[o,t]=Pd(e.defaultValue);function r(a){t(a),e.onChange&&e.onChange(a)}return o?Ao.createElement(Ao.Fragment,null,Ao.createElement(Oe,{value:o,maxWidth:200}),Ao.createElement(rf,{onClick:a=>{R(a),r(void 0)}},"Remove")):Ao.createElement(Bo,{onUpload:r},a=>Ao.createElement(rf,{...a},"Upload..."))}import{getPropertyDisplayName as Ud,tryGetDataType as Qd}from"@medplum/core";import tt from"react";var kt=["meta","implicitRules","language","text","contained","extension","modifierExtension"];import{createStyles as Dd}from"@mantine/core";import et from"react";var Td=Dd(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 af(e){let{children:o,compact:t}=e,{classes:r,cx:a}=Td();return et.createElement("dl",{className:a(r.root,{[r.compact]:t})},o)}function nf(e){return et.createElement(et.Fragment,null,et.createElement("dt",null,e.term),et.createElement("dd",null,e.children))}import{ActionIcon as Ed,Box as Ld,CopyButton as Rd,Tooltip as Nd}from"@mantine/core";import{formatDateTime as Hd,formatPeriod as Vd,formatTiming as qd,PropertyType as N}from"@medplum/core";import w from"react";import{formatCodeableConcept as kd}from"@medplum/core";import ff from"react";function Mo(e){return ff.createElement(ff.Fragment,null,kd(e.value))}import{formatCoding as Bd}from"@medplum/core";import lf from"react";function sf(e){return lf.createElement(lf.Fragment,null,Bd(e.value))}import ia from"react";import uf from"react";function Bt(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("]")),uf.createElement(uf.Fragment,null,t.join("").trim())}function df(e){let o=e.value;return o?ia.createElement(ia.Fragment,null,o.name,o.name&&": ",o.telecom?.map(t=>ia.createElement(Bt,{key:`telecom-${o.name}-${t.value}`,value:t}))):null}import Ad from"react";function cf(e){return Ad.createElement("div",null,e.value?.system,": ",e.value?.value)}import{formatMoney as Md}from"@medplum/core";import mf from"react";function pf(e){return mf.createElement(mf.Fragment,null,Md(e.value))}import{formatQuantity as Fd}from"@medplum/core";import xf from"react";function Ke(e){return xf.createElement(xf.Fragment,null,Fd(e.value))}import{formatRange as wd}from"@medplum/core";import If from"react";function At(e){return If.createElement(If.Fragment,null,wd(e.value))}import Mt from"react";function gf(e){let o=e.value;return o?Mt.createElement(Mt.Fragment,null,Mt.createElement(Ke,{value:o.numerator}),"\xA0/\xA0",Mt.createElement(Ke,{value:o.denominator})):null}import{stringify as Od}from"@medplum/core";import ua from"react";function lo(e){if(!e.value)return null;let o=e.value.display||e.value.reference||Od(e.value);return e.link!==!1&&e.value.reference?ua.createElement(le,{to:e.value},o):ua.createElement(ua.Fragment,null,o)}import Fo from"react";function hf(e){let{property:o,values:t}=e,r=o.type[0].code;return e.values?Fo.createElement(Fo.Fragment,null,t.map((a,n)=>Fo.createElement("div",{key:`${n}-${t.length}`},Fo.createElement(me,{arrayElement:!0,property:o,propertyType:r,value:a,ignoreMissingValues:e.ignoreMissingValues,link:e.link})))):Fo.createElement(Fo.Fragment,null)}function me(e){let{property:o,propertyType:t,value:r}=e;if(o?.path?.endsWith(".id"))return w.createElement(Ld,{component:"div",sx:{display:"flex",gap:3,alignItems:"center"}},r,w.createElement(Rd,{value:r,timeout:2e3},({copied:n,copy:f})=>w.createElement(Nd,{label:n?"Copied":"Copy",withArrow:!0,position:"right"},w.createElement(Ed,{color:n?"teal":"gray",onClick:f},n?w.createElement($o,{size:"1rem"}):w.createElement(Hr,{size:"1rem"})))));if(o?.max&&o.max>1&&!e.arrayElement)return t===N.Attachment?w.createElement(ef,{values:r,maxWidth:e.maxWidth}):w.createElement(hf,{property:o,values:r,ignoreMissingValues:e.ignoreMissingValues,link:e.link});switch(t){case N.boolean:return w.createElement(w.Fragment,null,r===void 0?"":(!!r).toString());case N.SystemString:case N.string:return w.createElement("div",{style:{whiteSpace:"pre-wrap"}},r);case N.code:case N.date:case N.decimal:case N.integer:case N.positiveInt:case N.unsignedInt:case N.uri:case N.url:return w.createElement(w.Fragment,null,r);case N.canonical:return w.createElement(lo,{value:{reference:r},link:e.link});case N.dateTime:case N.instant:return w.createElement(w.Fragment,null,Hd(r));case N.markdown:return w.createElement("pre",null,r);case N.Address:return w.createElement(bn,{value:r});case N.Annotation:return w.createElement(w.Fragment,null,r?.text);case N.Attachment:return w.createElement(Oe,{value:r,maxWidth:e.maxWidth});case N.CodeableConcept:return w.createElement(Mo,{value:r});case N.Coding:return w.createElement(sf,{value:r});case N.ContactDetail:return w.createElement(df,{value:r});case N.ContactPoint:return w.createElement(Bt,{value:r});case N.HumanName:return w.createElement(St,{value:r});case N.Identifier:return w.createElement(cf,{value:r});case N.Money:return w.createElement(pf,{value:r});case N.Period:return w.createElement(w.Fragment,null,Vd(r));case N.Quantity:case N.Duration:return w.createElement(Ke,{value:r});case N.Range:return w.createElement(At,{value:r});case N.Ratio:return w.createElement(gf,{value:r});case N.Reference:return w.createElement(lo,{value:r,link:e.link});case N.Timing:return w.createElement(w.Fragment,null,qd(r));case N.Dosage:case N.UsageContext:return w.createElement(ot,{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 w.createElement(ot,{value:{type:o.type[0].code,value:r},compact:!0,ignoreMissingValues:e.ignoreMissingValues})}}import{getTypedPropertyValue as Gd}from"@medplum/core";function Ce(e,o){let t=Gd(e,o);return t?Array.isArray(t)?[t.map(r=>r.value),t[0].type]:[t.value,t.type]:[void 0,"undefined"]}function ot(e){let o=e.value,t=o.value;if(!t)return null;let r=o.type,a=Qd(r);return a?typeof t=="object"&&"name"in t&&Object.keys(t).length===1&&typeof t.name=="string"?tt.createElement("div",null,t.name):tt.createElement(af,{compact:e.compact},Object.entries(a.elements).map(n=>{let[f,s]=n;if(kt.includes(f))return null;let[l,i]=Ce(o,f);return e.ignoreMissingValues&&(!l||Array.isArray(l)&&l.length===0)?null:tt.createElement(nf,{key:f,term:Ud(f)},tt.createElement(me,{property:s,propertyType:i,value:l,ignoreMissingValues:e.ignoreMissingValues,link:e.link}))})):tt.createElement("div",null,r,"\xA0not implemented")}import{Stack as xm}from"@mantine/core";import{getPropertyDisplayName as Xf,tryGetDataType as Im}from"@medplum/core";import Eo,{useState as gm}from"react";import{Group as zd,Input as Wd}from"@mantine/core";import Ft from"react";function wt(e){return Ft.createElement(zd,{noWrap:!0},Ft.createElement("div",null,e.children),Ft.createElement("div",null,Ft.createElement(Wd.Wrapper,{id:e.htmlFor,label:e.title,description:e.description,withAsterisk:e.withAsterisk},(()=>null)())))}import{Input as Xd}from"@mantine/core";import Jd from"react";function pe(e,o){return e?.issue?.filter(t=>Cf(t.expression?.[0],o))?.map(t=>t.details?.text)?.join(`
65
+ `)}function Ot(e,o){return e?.issue?.filter(t=>Cf(t.expression?.[0],o))}function Cf(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 ye(e){return Jd.createElement(Xd.Wrapper,{id:e.htmlFor,label:e.title,description:e.description,withAsterisk:e.withAsterisk,error:pe(e.outcome,e.htmlFor)},e.children)}import{capitalize as $d}from"@medplum/core";function rt(e,o,t,r,a){let n=r.type;if(n.length>1)for(let f of n){let s=o.replace("[x]",$d(f.code));s in e&&delete e[s]}return e[t]=a,e}import{Checkbox as lm,Group as sm,NativeSelect as im,Textarea as um,TextInput as Ca}from"@mantine/core";import{capitalize as dm,PropertyType as O}from"@medplum/core";import q,{useState as cm}from"react";import Kd,{useState as jd}from"react";function yf(e){let[o,t]=jd(e.defaultValue);function r(a){let n=Zd(a);t(n),e.onChange&&e.onChange(n)}return Kd.createElement(To,{binding:e.binding,name:e.name,placeholder:e.placeholder,defaultValue:o&&_d(o),maxSelectedValues:1,onChange:r})}function _d(e){return e.coding?.map(o=>({system:o.system,code:o.code,display:o.display}))}function Zd(e){if(e.length!==0)return{coding:e.map(o=>({system:o.system,code:o.code,display:o.display}))}}import Yd,{useState as ec}from"react";function Et(e){let[o,t]=ec(e.defaultValue);function r(a){let n=a[0],f=n&&tc(n);t(f),e.onChange&&e.onChange(f)}return Yd.createElement(To,{binding:e.binding,name:e.name,placeholder:e.placeholder,defaultValue:o&&oc(o),maxSelectedValues:1,onChange:r})}function oc(e){return{system:e.system,code:e.code,display:e.display}}function tc(e){return{system:e.system,code:e.code,display:e.display}}import{Group as lc,TextInput as sc}from"@mantine/core";import da,{useRef as ic,useState as uc}from"react";import{Group as rc,NativeSelect as vf,TextInput as ac}from"@mantine/core";import Lt,{useRef as nc,useState as fc}from"react";function Rt(e){let[o,t]=fc(e.defaultValue),r=nc();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 Lt.createElement(rc,{spacing:"xs",grow:!0,noWrap:!0},Lt.createElement(vf,{"data-testid":"system",defaultValue:o?.system,onChange:l=>n(l.currentTarget.value),data:["","email","phone","fax","pager","sms","other"]}),Lt.createElement(vf,{"data-testid":"use",defaultValue:o?.use,onChange:l=>f(l.currentTarget.value),data:["","home","work","temp","old","mobile"]}),Lt.createElement(ac,{placeholder:"Value",defaultValue:o?.value,onChange:l=>s(l.currentTarget.value)}))}function Sf(e){let[o,t]=uc(e.defaultValue),r=ic();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 da.createElement(lc,{spacing:"xs",grow:!0,noWrap:!0},da.createElement(sc,{"data-testid":e.name+"-name",name:e.name+"-name",placeholder:"Name",style:{width:180},defaultValue:o?.name,onChange:s=>n(s.currentTarget.value)}),da.createElement(Rt,{name:e.name+"-telecom",defaultValue:o?.telecom?.[0],onChange:f}))}import{TextInput as dc}from"@mantine/core";import cc from"react";import{isValidDate as bf}from"@medplum/core";function Pf(e){if(!e)return"";let o=new Date(e);return bf(o)?o.toLocaleDateString("sv")+"T"+o.toLocaleTimeString("sv"):""}function Df(e){if(!e)return"";let o=new Date(e);return bf(o)?o.toISOString():""}function ke(e){return cc.createElement(dc,{id:e.name,name:e.name,"data-autofocus":e.autoFocus,"data-testid":e.name,placeholder:e.placeholder,required:e.required,type:mc(),defaultValue:Pf(e.defaultValue),autoFocus:e.autoFocus,error:pe(e.outcome,e.name),onChange:o=>{if(e.onChange){let t=o.currentTarget.value;e.onChange(Df(t))}}})}function mc(){return"datetime-local"}import{JsonInput as pc}from"@mantine/core";import{stringify as xc}from"@medplum/core";import Ic from"react";function Tf(e){return Ic.createElement(pc,{id:e.name,name:e.name,"data-testid":"extension-input",defaultValue:xc(e.defaultValue),deserialize:JSON.parse,onChange:o=>{e.onChange&&e.onChange(JSON.parse(o))}})}import{Group as gc,NativeSelect as hc,TextInput as Nt}from"@mantine/core";import wo,{useRef as Cc,useState as yc}from"react";function kf(e){let[o,t]=yc(e.defaultValue),r=Cc();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 wo.createElement(gc,{spacing:"xs",grow:!0,noWrap:!0},wo.createElement(hc,{defaultValue:o?.use,name:e.name+"-use","data-testid":"use",onChange:u=>n(u.currentTarget.value),data:["","temp","old","usual","official","nickname","anonymous","maiden"]}),wo.createElement(Nt,{placeholder:"Prefix",name:e.name+"-prefix",defaultValue:o?.prefix?.join(" "),onChange:u=>f(u.currentTarget.value)}),wo.createElement(Nt,{placeholder:"Given",name:e.name+"-given",defaultValue:o?.given?.join(" "),onChange:u=>s(u.currentTarget.value)}),wo.createElement(Nt,{name:e.name+"-family",placeholder:"Family",defaultValue:o?.family,onChange:u=>l(u.currentTarget.value)}),wo.createElement(Nt,{placeholder:"Suffix",name:e.name+"-suffix",defaultValue:o?.suffix?.join(" "),onChange:u=>i(u.currentTarget.value)}))}import{Group as vc,TextInput as Bf}from"@mantine/core";import ca,{useState as Sc}from"react";function Af(e){let[o,t]=Sc(e.defaultValue);function r(a){t(a),e.onChange&&e.onChange(a)}return ca.createElement(vc,{spacing:"xs",grow:!0,noWrap:!0},ca.createElement(Bf,{placeholder:"System",defaultValue:o?.system,onChange:a=>r({...o,system:a.currentTarget.value})}),ca.createElement(Bf,{placeholder:"Value",defaultValue:o?.value,onChange:a=>r({...o,value:a.currentTarget.value})}))}import{NativeSelect as bc,TextInput as Pc}from"@mantine/core";import ma,{useCallback as pa,useState as Dc}from"react";var Tc=["USD","EUR","CAD","GBP","AUD"];function Mf(e){let{onChange:o}=e,[t,r]=Dc(e.defaultValue),a=pa(l=>{r(l),o&&o(l)},[o]),n=pa(l=>{a({...t,currency:l.currentTarget.value})},[t,a]),f=pa(l=>{a({...t,value:l.currentTarget.valueAsNumber})},[t,a]),s=ma.createElement(bc,{defaultValue:t?.currency,data:Tc,styles:{input:{fontWeight:500,borderTopLeftRadius:0,borderBottomLeftRadius:0,width:92}},onChange:n});return ma.createElement(Pc,{type:"number",label:e.label,placeholder:e.placeholder??"Value",defaultValue:t?.value?.toString()??"USD",icon:ma.createElement(Vr,{size:14}),rightSection:s,rightSectionWidth:92,onChange:f})}import{Group as kc}from"@mantine/core";import xa,{useState as Bc}from"react";function Ff(e){let[o,t]=Bc(e.defaultValue);function r(a){t(a),e.onChange&&e.onChange(a)}return xa.createElement(kc,{spacing:"xs",grow:!0,noWrap:!0},xa.createElement(ke,{name:e.name+".start",placeholder:"Start",defaultValue:o?.start,onChange:a=>r({...o,start:a})}),xa.createElement(ke,{name:e.name+".end",placeholder:"End",defaultValue:o?.end,onChange:a=>r({...o,end:a})}))}import{Group as Ac,NativeSelect as Mc,TextInput as wf}from"@mantine/core";import Ht,{useState as Fc}from"react";function Se(e){let[o,t]=Fc(e.defaultValue);function r(a){t(a),e.onChange&&e.onChange(a)}return Ht.createElement(Ac,{spacing:"xs",grow:!0,noWrap:!0},Ht.createElement(Mc,{style:{width:80},"data-testid":e.name+"-comparator",defaultValue:o?.comparator,data:["","<","<=",">=",">"],onChange:a=>r({...o,comparator:a.currentTarget.value})}),Ht.createElement(wf,{id:e.name,name:e.name,required:e.required,"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:wc(a.currentTarget.value)})}}),Ht.createElement(wf,{placeholder:"Unit","data-testid":e.name+"-unit",defaultValue:o?.unit,onChange:a=>r({...o,unit:a.currentTarget.value})}))}function wc(e){if(e)return parseFloat(e)}import{Group as Oc}from"@mantine/core";import Ia,{useState as Ec}from"react";function at(e){let[o,t]=Ec(e.defaultValue);function r(a){t(a),e.onChange&&e.onChange(a)}return Ia.createElement(Oc,{spacing:"xs",grow:!0,noWrap:!0},Ia.createElement(Se,{name:e.name+"-low",defaultValue:o?.low,onChange:a=>r({...o,low:a})}),Ia.createElement(Se,{name:e.name+"-high",defaultValue:o?.high,onChange:a=>r({...o,high:a})}))}import{Group as Lc}from"@mantine/core";import ga,{useState as Rc}from"react";function Of(e){let[o,t]=Rc(e.defaultValue);function r(a){t(a),e.onChange&&e.onChange(a)}return ga.createElement(Lc,{spacing:"xs",grow:!0,noWrap:!0},ga.createElement(Se,{name:e.name+"-numerator",defaultValue:o?.numerator,onChange:a=>r({...o,numerator:a})}),ga.createElement(Se,{name:e.name+"-denominator",defaultValue:o?.denominator,onChange:a=>r({...o,denominator:a})}))}import{Group as Xc,NativeSelect as Jc}from"@mantine/core";import{createReference as $c}from"@medplum/core";import qt,{useState as Nf}from"react";import{Group as Nc,Text as Ef}from"@mantine/core";import{getDisplayString as Hc,getReferenceString as Rf}from"@medplum/core";import so,{forwardRef as Vc,useCallback as Lf,useState as qc}from"react";var Gc={Observation:"code",User:"email:contains"},Uc=["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 Qc(e){return{value:Rf(e),label:Hc(e),resource:e}}function Vt(e){let o=P(),t=e.resourceType,[r,a]=qc(),n=z(e.defaultValue,a),f=e.onChange,s=Lf(async(i,u)=>{let c=Wc(t),d=new URLSearchParams({[c]:i,_count:"10"});return await o.searchResources(t,d,{signal:u})},[o,t]),l=Lf(i=>{f&&f(i[0])},[f]);return e.defaultValue&&!r&&!n?null:so.createElement(Do,{name:e.name,required:e.required,itemComponent:zc,defaultValue:n,placeholder:e.placeholder,maxSelectedValues:1,toKey:Rf,toOption:Qc,loadOptions:s,onChange:l,clearable:!0})}var zc=Vc(({label:e,resource:o,...t},r)=>so.createElement("div",{ref:r,...t},so.createElement(Nc,{noWrap:!0},so.createElement(ge,{value:o}),so.createElement("div",null,so.createElement(Ef,null,e),so.createElement(Ef,{size:"xs",color:"dimmed"},o.birthDate)))));function Wc(e){return Gc[e]??(Uc.includes(e)?"name":"_id")}function Oo(e){let o=Kc(e.targetTypes),t=jc(e.defaultValue,o),[r,a]=Nf(e.defaultValue),[n,f]=Nf(t);function s(l){a(l),e.onChange&&e.onChange(l)}return qt.createElement(Xc,{spacing:"xs",grow:!0,noWrap:!0},o&&o.length>1&&qt.createElement(Jc,{"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&&qt.createElement(ko,{autoFocus:e.autoFocus,testId:"reference-input-resource-type-input",defaultValue:n,onChange:f,name:e.name+"-resourceType",placeholder:"Resource Type"}),qt.createElement(Vt,{resourceType:n,name:e.name+"-id",required:e.required,placeholder:e.placeholder,defaultValue:r,onChange:l=>{s(l?$c(l):void 0)}}))}function Kc(e){if(!(!e||e.length===0||e.length===1&&e[0]==="Resource"))return e}function jc(e,o){let t=e?.reference?.split("/")[0];if(t)return t;if(o&&o.length>0)return o[0]}import{ActionIcon as Hf}from"@mantine/core";import xe,{useRef as _c,useState as Zc}from"react";function Vf(e){let[o,t]=Zc(e.defaultValue&&Array.isArray(e.defaultValue)?e.defaultValue:[]),r=_c();r.current=o;function a(n){t(n),e.onChange&&e.onChange(n)}return xe.createElement("table",{style:{width:"100%",borderCollapse:"collapse"}},xe.createElement("colgroup",null,xe.createElement("col",{width:"97%"}),xe.createElement("col",{width:"3%"})),xe.createElement("tbody",null,o.map((n,f)=>xe.createElement("tr",{key:`${f}-${o.length}`},xe.createElement("td",null,xe.createElement(qe,{arrayElement:!0,property:e.property,name:e.name+"."+f,defaultValue:n,onChange:s=>{let l=[...r.current];l[f]=s,a(l)}})),xe.createElement("td",{style:{textAlign:"right"}},xe.createElement(Hf,{title:"Remove",size:"sm",onClick:s=>{R(s);let l=[...r.current];l.splice(f,1),a(l)}},xe.createElement(We,null))))),xe.createElement("tr",null,xe.createElement("td",null),xe.createElement("td",{style:{textAlign:"right"}},xe.createElement(Hf,{title:"Add",size:"sm",color:"green",onClick:n=>{R(n);let f=[...r.current];f.push(void 0),a(f)}},xe.createElement(go,null))))))}import{Button as Uf,Chip as qf,Group as Gt,Modal as Yc,NativeSelect as em,Stack as om,Switch as tm,TextInput as rm}from"@mantine/core";import{formatTiming as am}from"@medplum/core";import K,{useRef as Qf,useState as ha}from"react";var nm=["sun","mon","tue","wed","thu","fri","sat"];function zf(e){let[o,t]=ha(e.defaultValue),[r,a]=ha(!1),n=Qf();return n.current=o,K.createElement(K.Fragment,null,K.createElement(Gt,{spacing:"xs",grow:!0,noWrap:!0},K.createElement("span",null,am(n.current)||"No repeat"),K.createElement(Uf,{onClick:()=>a(!0)},"Edit")),K.createElement(fm,{visible:r,defaultValue:n.current,onOk:f=>{e.onChange&&e.onChange(f),t(f),a(!1)},onCancel:()=>a(!1)}))}var Gf={repeat:{period:1,periodUnit:"d"}};function fm(e){let[o,t]=ha(e.defaultValue||Gf),r=Qf();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(Yc,{title:"Timing",closeButtonProps:{"aria-label":"Close"},opened:e.visible,onClose:()=>e.onCancel()},K.createElement(om,null,K.createElement(ye,{title:"Starts on",htmlFor:"timing-dialog-start"},K.createElement(ke,{name:"timing-dialog-start",onChange:i=>a(i)})),K.createElement(tm,{label:"Repeat",checked:!!o.repeat,onChange:i=>n(i.currentTarget.checked?Gf.repeat:void 0)}),o.repeat&&K.createElement(K.Fragment,null,K.createElement(ye,{title:"Repeat every",htmlFor:"timing-dialog-period"},K.createElement(Gt,{spacing:"xs",grow:!0,noWrap:!0},K.createElement(rm,{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(em,{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(ye,{title:"Repeat on"},K.createElement(qf.Group,{multiple:!0,onChange:l},K.createElement(Gt,{position:"apart",mt:"md",spacing:"xs"},nm.map(i=>K.createElement(qf,{key:i,value:i,size:"xs",radius:"xl"},i.charAt(0).toUpperCase())))))),K.createElement(Gt,{position:"right"},K.createElement(Uf,{onClick:()=>e.onOk(o)},"OK"))))}function qe(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===O.Attachment?q.createElement(tf,{name:r,defaultValue:a,onChange:e.onChange}):q.createElement(Vf,{property:o,name:r,defaultValue:a,onChange:e.onChange});let n=o.type;return n.length>1?q.createElement(mm,{elementDefinitionTypes:n,...e}):q.createElement(Wf,{elementDefinitionType:n[0],...e})}function mm(e){let o=e.elementDefinitionTypes,t;e.defaultPropertyType&&(t=o.find(n=>n.code===e.defaultPropertyType)),t||(t=o[0]);let[r,a]=cm(t);return q.createElement(sm,{spacing:"xs",grow:!0,noWrap:!0},q.createElement(im,{style:{width:"200px"},defaultValue:r.code,onChange:n=>{a(o.find(f=>f.code===n.currentTarget.value))},data:o.map(n=>({value:n.code,label:n.code}))}),q.createElement(Wf,{...e,elementDefinitionType:r,onChange:n=>{e.onChange&&e.onChange(n,e.name.replace("[x]",dm(r.code)))}}))}function Wf(e){let o=e.property,t=e.elementDefinitionType.code,r=e.name,a=e.defaultValue,n=o.min!==void 0&&o.min>0;switch(t){case O.SystemString:case O.canonical:case O.string:case O.time:case O.uri:case O.url:return q.createElement(Ca,{id:r,name:r,"data-testid":r,defaultValue:a,required:n,onChange:f=>{e.onChange&&e.onChange(f.currentTarget.value)},error:pe(e.outcome,r)});case O.date:return q.createElement(Ca,{type:"date",id:r,name:r,"data-testid":r,defaultValue:a,required:n,onChange:f=>{e.onChange&&e.onChange(f.currentTarget.value)},error:pe(e.outcome,r)});case O.dateTime:case O.instant:return q.createElement(ke,{name:r,defaultValue:a,onChange:e.onChange,outcome:e.outcome});case O.decimal:case O.integer:case O.positiveInt:case O.unsignedInt:return q.createElement(Ca,{type:"number",step:t===O.decimal?"any":"1",id:r,name:r,"data-testid":r,defaultValue:a,required:n,onChange:f=>{e.onChange&&e.onChange(f.currentTarget.valueAsNumber)}});case O.code:return q.createElement(Dt,{binding:o.binding?.valueSet,name:r,defaultValue:a,onChange:e.onChange});case O.boolean:return q.createElement(lm,{id:r,name:r,"data-testid":r,defaultChecked:!!a,onChange:f=>{e.onChange&&e.onChange(f.currentTarget.checked)}});case O.markdown:return q.createElement(um,{id:r,name:r,"data-testid":r,defaultValue:a,required:n,onChange:f=>{e.onChange&&e.onChange(f.currentTarget.value)}});case O.Address:return q.createElement(kn,{name:r,defaultValue:a,onChange:e.onChange});case O.Annotation:return q.createElement(Bn,{name:r,defaultValue:a,onChange:e.onChange});case O.Attachment:return q.createElement(Tt,{name:r,defaultValue:a,onChange:e.onChange});case O.CodeableConcept:return q.createElement(yf,{binding:o.binding?.valueSet,name:r,defaultValue:a,onChange:e.onChange});case O.Coding:return q.createElement(Et,{binding:o.binding?.valueSet,name:r,defaultValue:a,onChange:e.onChange});case O.ContactDetail:return q.createElement(Sf,{name:r,defaultValue:a,onChange:e.onChange});case O.ContactPoint:return q.createElement(Rt,{name:r,defaultValue:a,onChange:e.onChange});case O.Extension:return q.createElement(Tf,{name:r,defaultValue:a,onChange:e.onChange});case O.HumanName:return q.createElement(kf,{name:r,defaultValue:a,onChange:e.onChange});case O.Identifier:return q.createElement(Af,{name:r,defaultValue:a,onChange:e.onChange});case O.Money:return q.createElement(Mf,{name:r,defaultValue:a,onChange:e.onChange});case O.Period:return q.createElement(Ff,{name:r,defaultValue:a,onChange:e.onChange});case O.Duration:case O.Quantity:return q.createElement(Se,{name:r,defaultValue:a,onChange:e.onChange});case O.Range:return q.createElement(at,{name:r,defaultValue:a,onChange:e.onChange});case O.Ratio:return q.createElement(Of,{name:r,defaultValue:a,onChange:e.onChange});case O.Reference:return q.createElement(Oo,{name:r,defaultValue:a,targetTypes:pm(o),onChange:e.onChange});case O.Timing:return q.createElement(zf,{name:r,defaultValue:a,onChange:e.onChange});case O.Dosage:case O.UsageContext:return q.createElement(nt,{typeName:t,defaultValue:a,onChange:e.onChange,outcome:e.outcome});default:return q.createElement(nt,{typeName:o.type[0].code,defaultValue:a,onChange:e.onChange,outcome:e.outcome})}}function pm(e){return e?.type?.[0]?.targetProfile?.map(o=>o.split("/").pop())}function nt(e){let[o,t]=gm(e.defaultValue??{});function r(s){t(s),e.onChange&&e.onChange(s)}let a=e.typeName,n=Im(a);if(!n)return Eo.createElement("div",null,a,"\xA0not implemented");let f={type:a,value:o};return Eo.createElement(xm,null,Object.entries(n.elements).map(([s,l])=>{if(s==="id"||kt.includes(s)||!l.type)return null;let[i,u]=Ce(f,s),c=l.min!==void 0&&l.min>0;return l.type.length===1&&l.type[0].code==="boolean"?Eo.createElement(wt,{key:s,title:Xf(s),description:l.description,htmlFor:s},Eo.createElement(qe,{property:l,name:s,defaultValue:i,defaultPropertyType:u,outcome:e.outcome,onChange:(d,x)=>{r(rt(o,s,x??s,l,d))}})):Eo.createElement(ye,{key:s,title:Xf(s),description:l.description,withAsterisk:c,htmlFor:s,outcome:e.outcome},Eo.createElement(qe,{property:l,name:s,defaultValue:i,defaultPropertyType:u,onChange:(d,x)=>{r(rt(o,s,x??s,l,d))}}))}))}import{Button as ya,createStyles as hm,Group as $f}from"@mantine/core";import ee,{useMemo as Cm,useState as ym}from"react";function Jf(e){return e.toLocaleString("default",{month:"long"})+" "+e.getFullYear()}function Ut(){let e=new Date;return e.setDate(1),e.setHours(0,0,0,0),e}var vm=hm(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 Kf(e){let{classes:o}=vm(),{onChangeMonth:t,onClick:r}=e,[a,n]=ym(Ut);function f(l){n(i=>{let u=new Date(i.getTime());return u.setMonth(i.getMonth()+l),t(u),u})}let s=Cm(()=>Sm(a,e.slots),[a,e.slots]);return ee.createElement("div",null,ee.createElement($f,{position:"apart",spacing:"xs",grow:!0,noWrap:!0},ee.createElement("p",{style:{flex:1}},Jf(a)),ee.createElement($f,{position:"right",spacing:"xs"},ee.createElement(ya,{variant:"outline","aria-label":"Previous month",onClick:()=>f(-1)},"<"),ee.createElement(ya,{variant:"outline","aria-label":"Next month",onClick:()=>f(1)},">"))),ee.createElement("table",{className:o.table},ee.createElement("thead",null,ee.createElement("tr",null,ee.createElement("th",null,"SUN"),ee.createElement("th",null,"MON"),ee.createElement("th",null,"TUE"),ee.createElement("th",null,"WED"),ee.createElement("th",null,"THU"),ee.createElement("th",null,"FRI"),ee.createElement("th",null,"SAT"))),ee.createElement("tbody",null,s.map((l,i)=>ee.createElement("tr",{key:"week-"+i},l.map((u,c)=>ee.createElement("td",{key:"day-"+c},u&&ee.createElement(ya,{disabled:!u.available,onClick:()=>r(u.date)},u.date.getDate()))))))))}function Sm(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:bm(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 bm(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 Pm,createStyles as Dm}from"@mantine/core";import Tm from"react";var km=Dm(()=>({root:{"@media (max-width: 800px)":{paddingLeft:4,paddingRight:4}}}));function je(e){let{children:o,...t}=e,{classes:r}=km();return Tm.createElement(Pm,{className:r.root,...t},o)}import Rp from"react";import{ActionIcon as ml,Center as yp,createStyles as vp,Group as Sp,Loader as bp,Menu as Ge,ScrollArea as Pp,TextInput as Dp}from"@mantine/core";import{showNotification as Tp,updateNotification as Wt}from"@mantine/notifications";import{getReferenceString as ft,normalizeErrorString as pl}from"@medplum/core";import D,{useCallback as Xt,useEffect as kp,useRef as xl,useState as Il}from"react";import{createStyles as Gm,Group as zt,List as Zf,Stack as Yf,Text as be,Title as el}from"@mantine/core";import{capitalize as Um,formatCodeableConcept as Qm,formatDateTime as ba,formatObservationValue as zm,isReference as Wm}from"@medplum/core";import I,{useEffect as Xm,useState as Jm}from"react";import{Blockquote as Bm,createStyles as Am,Stack as Mm}from"@mantine/core";import jf from"react";var Fm=Am(e=>({noteBody:{fontSize:e.fontSizes.sm},noteCite:{fontSize:e.fontSizes.xs,marginBlockStart:3},noteRoot:{padding:5}}));function va({value:e}){let{classes:o}=Fm();return e?jf.createElement(Mm,{justify:"flex-start",spacing:"xs"},e.map(t=>t.text&&jf.createElement(Bm,{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 Nm}from"@mantine/core";import Sa from"react";import{Text as wm}from"@mantine/core";import{getDisplayString as Om,isOk as Em,normalizeErrorString as Lm}from"@medplum/core";import _f,{useState as Rm}from"react";function Ee(e){let{value:o,link:t,...r}=e,[a,n]=Rm(),f=z(o,n),s;if(a&&!Em(a))s=`[${Lm(a)}]`;else if(f)s=Om(f);else return null;return t?_f.createElement(le,{to:o,...r},s):_f.createElement(wm,{component:"span",...r},s)}function _e(e){return Sa.createElement(Nm,{spacing:"xs"},Sa.createElement(ge,{size:24,radius:12,value:e.value,link:e.link}),Sa.createElement(Ee,{value:e.value,link:e.link}))}import{Badge as Hm}from"@mantine/core";import Vm from"react";var qm={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 Qt(e){return Vm.createElement(Hm,{color:qm[e.status]},e.status)}var ol=Gm(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}}));Pa.defaultProps={hideObservationNotes:!1,hideSpecimenInfo:!1};function Pa(e){let o=P(),t=z(e.value),[r,a]=Jm();if(Xm(()=>{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(Yf,null,I.createElement(el,null,"Diagnostic Report"),I.createElement($m,{value:t}),r&&!e.hideSpecimenInfo&&Km(r),t.result&&I.createElement(jm,{hideObservationNotes:e.hideObservationNotes,value:t.result}),n.length>0&&I.createElement(va,{value:n}))}function $m({value:e}){return I.createElement(zt,{mt:"md",spacing:30},e.subject&&I.createElement("div",null,I.createElement(be,{size:"xs",transform:"uppercase",color:"dimmed"},"Subject"),I.createElement(be,null,I.createElement(_e,{value:e.subject,link:!0}))),e.resultsInterpreter?.map(o=>I.createElement("div",{key:o.reference},I.createElement(be,{size:"xs",transform:"uppercase",color:"dimmed"},"Interpreter"),I.createElement(be,null,I.createElement(_e,{value:o,link:!0})))),e.performer?.map(o=>I.createElement("div",{key:o.reference},I.createElement(be,{size:"xs",transform:"uppercase",color:"dimmed"},"Performer"),I.createElement(be,null,I.createElement(_e,{value:o,link:!0})))),e.issued&&I.createElement("div",null,I.createElement(be,{size:"xs",transform:"uppercase",color:"dimmed"},"Issued"),I.createElement(be,null,ba(e.issued))),e.status&&I.createElement("div",null,I.createElement(be,{size:"xs",transform:"uppercase",color:"dimmed"},"Status"),I.createElement(be,null,Um(e.status))))}function Km(e){return I.createElement(Yf,{spacing:"xs"},I.createElement(el,{order:2,size:"h6"},"Specimens"),I.createElement(Zf,{type:"ordered"},e?.map(o=>I.createElement(Zf.Item,{ml:"sm",key:`specimen-${o.id}`},I.createElement(zt,{spacing:20},I.createElement(zt,{spacing:5},I.createElement(be,{fw:500},"Collected:")," ",ba(o.collection?.collectedDateTime)),I.createElement(zt,{spacing:5},I.createElement(be,{fw:500},"Received:")," ",ba(o.receivedTime)))))))}function jm(e){let{classes:o}=ol();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(tl,{value:e.value,ancestorIds:e.ancestorIds,hideObservationNotes:e.hideObservationNotes})))}function tl(e){return I.createElement(I.Fragment,null,e.value?.map(o=>I.createElement(_m,{key:`obs-${Wm(o)?o.reference:o.id}`,value:o,ancestorIds:e.ancestorIds,hideObservationNotes:e.hideObservationNotes})))}function _m(e){let{classes:o,cx:t}=ol(),r=z(e.value);if(!r||e.ancestorIds?.includes(r.id))return null;let a=!e.hideObservationNotes&&r.note,n=ep(r);return I.createElement(I.Fragment,null,I.createElement("tr",{className:t({[o.criticalRow]:n})},I.createElement("td",{rowSpan:a?2:1},I.createElement(le,{to:r},I.createElement(Mo,{value:r.code}))),I.createElement("td",null,I.createElement(Zm,{value:r})),I.createElement("td",null,I.createElement(Ym,{value:r.referenceRange})),I.createElement("td",null,r.interpretation&&r.interpretation.length>0&&I.createElement(Mo,{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-${Qm(f)}`},I.createElement(Mo,{value:f}))))),I.createElement("td",null,r.performer?.map(f=>I.createElement(lo,{key:f.reference,value:f}))),I.createElement("td",null,r.status&&I.createElement(Qt,{status:r.status}))),r.hasMember&&I.createElement(tl,{value:r.hasMember,ancestorIds:e.ancestorIds?[...e.ancestorIds,r.id]:[r.id],hideObservationNotes:e.hideObservationNotes}),a&&I.createElement("tr",null,I.createElement("td",{colSpan:6},I.createElement(va,{value:r.note}))))}function Zm(e){let o=e.value;return I.createElement(I.Fragment,null,zm(o))}function Ym(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(At,{value:o}):null}function ep(e){let o=e.interpretation?.[0]?.coding?.[0]?.code;return o==="AA"||o==="LL"||o==="HH"||o==="A"}import{createStyles as op,Paper as tp,useComponentDefaultProps as rp}from"@mantine/core";import ap from"react";var np=op((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%"}}})),fp={shadow:"xs",radius:"md",withBorder:!0};function Lo(e){let{className:o,children:t,width:r,fill:a,unstyled:n,...f}=rp("Panel",fp,e),{classes:s,cx:l}=np({width:r,fill:a},{name:"Panel",unstyled:n});return ap.createElement(tp,{className:l(s.paper,o),...f},t)}import{createStyles as lp}from"@mantine/core";import{getDataType as sp,getPropertyDisplayName as ip,stringify as rl,toTypedValue as al}from"@medplum/core";import ie,{useEffect as up,useState as dp}from"react";var cp=lp(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 fl(e){let{classes:o}=cp(),t=P(),[r,a]=dp(!1);if(up(()=>{t.requestSchema(e.original.resourceType).then(()=>a(!0)).catch(console.log)},[t,e.original.resourceType]),!r)return null;let n=sp(e.original.resourceType);return ie.createElement("table",{className:o.root},ie.createElement("colgroup",null,ie.createElement("col",{style:{width:"30%"}}),ie.createElement("col",{style:{width:"35%"}}),ie.createElement("col",{style:{width:"35%"}})),ie.createElement("thead",null,ie.createElement("tr",null,ie.createElement("th",null,"Property"),ie.createElement("th",null,"Before"),ie.createElement("th",null,"After"))),ie.createElement("tbody",null,Object.entries(n.elements).map(([f,s])=>{if(f==="id"||f==="meta")return null;let[l,i]=Ce(al(e.original),f),[u,c]=Ce(al(e.revised),f);return nl(l)&&nl(u)||rl(l)===rl(u)?null:ie.createElement("tr",{key:f},ie.createElement("td",null,ip(f)),ie.createElement("td",{className:o.removed},ie.createElement(me,{property:s,propertyType:i,value:l,ignoreMissingValues:!0})),ie.createElement("td",{className:o.added},ie.createElement(me,{property:s,propertyType:c,value:u,ignoreMissingValues:!0})))})))}function nl(e){return!e||Array.isArray(e)&&e.length===0||typeof e=="object"&&Object.keys(e).length===0}import mp,{useEffect as pp,useState as xp}from"react";function Da(e){let o=P(),t=z(e.value),[r,a]=xp(!1);return pp(()=>{t&&o.requestSchema(t.resourceType).then(()=>a(!0)).catch(console.log)},[o,t]),!r||!t?null:mp.createElement(ot,{value:{type:t.resourceType,value:e.forceUseInput?e.value:t},ignoreMissingValues:e.ignoreMissingValues})}import{ActionIcon as Ip,Group as gp,Menu as ll,Text as Ta}from"@mantine/core";import{formatDateTime as hp,getReferenceString as Cp}from"@medplum/core";import te from"react";function sl(e){return te.createElement(je,null,e.children)}function Ze(e){let{resource:o,profile:t,padding:r,popupMenuItems:a,...n}=e,f=t??o.meta?.author,s=e.dateTime??o.meta?.lastUpdated;return te.createElement(Lo,{"data-testid":"timeline-item",fill:!0,...n},te.createElement(gp,{position:"apart",spacing:8,mx:"xs",my:"sm"},te.createElement(ge,{value:f,link:!0,size:"md"}),te.createElement("div",{style:{flex:1}},te.createElement(Ta,{size:"sm"},te.createElement(Ee,{color:"dark",weight:500,value:f,link:!0})),te.createElement(Ta,{size:"xs"},te.createElement(le,{color:"dimmed",to:e.resource},hp(s)),te.createElement(Ta,{component:"span",color:"dimmed",mx:8},"\xB7"),te.createElement(le,{color:"dimmed",to:e.resource},e.resource.resourceType))),a&&te.createElement(ll,{position:"bottom-end",shadow:"md",width:200},te.createElement(ll.Target,null,te.createElement(Ip,{radius:"xl","aria-label":`Actions for ${Cp(e.resource)}`},te.createElement(qr,null))),a)),te.createElement(vo,null,r&&te.createElement("div",{style:{padding:"0 16px 16px 16px"}},e.children),!r&&te.createElement(te.Fragment,null,e.children)))}function dl(e,o){e.sort((t,r)=>{let a=il(t,o),n=il(r,o);return a>n?1:a<n?-1:ul(t,o)-ul(r,o)})}function il(e,o){if(!cl(e,o)){let t=e.priority;if(typeof t=="string")return{stat:4,asap:3,urgent:2}[t]??0}return 0}function ul(e,o){if(!cl(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 cl(e,o){return!!o&&e.resourceType===o.resourceType&&e.id===o.id}var Bp=vp(e=>({pinnedComment:{backgroundColor:e.colors.blue[0]}}));function Ye(e){let o=P(),t=Qe(),r=o.getProfile(),a=xl(null),n=z(e.value),[f,s]=Il(),[l,i]=Il([]),u=e.loadTimelineResources,c=xl(l);c.current=l;let d=Xt(h=>{dl(h,n),h.reverse(),i(h)},[n]),x=Xt(h=>{let H=[];for(let we of h){if(we.status!=="fulfilled")continue;let C=we.value;if(C.type==="history"&&s(C),C.entry)for(let U of C.entry)H.push(U.resource)}d(H)},[d]),y=Xt(h=>d([...c.current,h]),[d]),g=Xt(()=>{let h,H;"resourceType"in e.value?(h=e.value.resourceType,H=e.value.id):[h,H]=e.value.reference?.split("/"),u(o,h,H).then(x).catch(console.log)},[o,e.value,u,x]);kp(()=>g(),[g]);function T(h){!n||!e.createCommunication||o.createResource(e.createCommunication(n,r,h)).then(H=>y(H)).catch(console.log)}function B(h){!n||!e.createMedia||o.createResource(e.createMedia(n,r,h)).then(H=>y(H)).then(()=>Wt({id:"upload-notification",color:"teal",title:"Upload complete",message:"",icon:D.createElement($o,{size:16}),autoClose:2e3})).catch(H=>Wt({id:"upload-notification",color:"red",title:"Upload error",message:pl(H),icon:D.createElement(Ct,{size:16}),autoClose:2e3}))}function k(h,H){return o.updateResource({...h,priority:H})}function A(h){k(h,"stat").then(g).catch(console.log)}function W(h){k(h,"routine").then(g).catch(console.log)}function v(h){t(`/${h.resourceType}/${h.id}`)}function L(h){t(`/${h.resourceType}/${h.id}/edit`)}function Z(h){t(`/${h.resourceType}/${h.id}/delete`)}function ae(h){t(`/${h.resourceType}/${h.id}/_history/${h.meta?.versionId}`)}function Re(){Tp({id:"upload-notification",loading:!0,title:"Initializing upload...",message:"Please wait...",autoClose:!1,withCloseButton:!1})}function ro(h){Wt({id:"upload-notification",loading:!0,title:"Uploading...",message:Lp(h),autoClose:!1,withCloseButton:!1})}function ce(h){Wt({id:"upload-notification",color:"red",title:"Upload error",message:pl(h),icon:D.createElement(Ct,{size:16}),autoClose:2e3})}return n?D.createElement(sl,null,e.createCommunication&&D.createElement(Lo,null,D.createElement($,{testid:"timeline-form",onSubmit:h=>{T(h.text);let H=a.current;H&&(H.value="",H.focus())}},D.createElement(Sp,{spacing:"xs",noWrap:!0,style:{width:"100%"}},D.createElement(ge,{value:r}),D.createElement(Dp,{name:"text",ref:a,placeholder:"Add comment",style:{width:"100%",maxWidth:300}}),D.createElement(ml,{type:"submit",radius:"xl",color:"blue",variant:"filled"},D.createElement(Xr,{size:16})),D.createElement(Bo,{onUpload:B,onUploadStart:Re,onUploadProgress:ro,onUploadError:ce},h=>D.createElement(ml,{...h,radius:"xl",color:"blue",variant:"filled"},D.createElement(Ko,{size:16})))))),l.map(h=>{if(!h)return null;let H=`${h.resourceType}/${h.id}/${h.meta?.versionId}`;if(h.resourceType===n.resourceType&&h.id===n.id)return D.createElement(Ap,{key:H,history:f,resource:h,onDetails:ae});switch(h.resourceType){case"AuditEvent":return D.createElement(Op,{key:H,resource:h,onDetails:v});case"Communication":return D.createElement(Fp,{key:H,resource:h,onPin:h.priority!=="stat"?A:void 0,onUnpin:h.priority==="stat"?W:void 0,onDetails:v,onEdit:L,onDelete:Z});case"DiagnosticReport":return D.createElement(Ep,{key:H,resource:h,onDetails:v,onEdit:L,onDelete:Z});case"Media":return D.createElement(wp,{key:H,resource:h,onDetails:v,onEdit:L,onDelete:Z});default:return D.createElement(Ze,{key:H,resource:h,padding:!0},D.createElement(Da,{value:h,ignoreMissingValues:!0}))}})):D.createElement(yp,{style:{width:"100%",height:"100%"}},D.createElement(bp,null))}function Ro(e){return D.createElement(Ge.Dropdown,null,D.createElement(Ge.Label,null,"Resource"),e.onPin&&D.createElement(Ge.Item,{icon:D.createElement(Jr,{size:14}),onClick:()=>e.onPin(e.resource),"aria-label":`Pin ${ft(e.resource)}`},"Pin"),e.onUnpin&&D.createElement(Ge.Item,{icon:D.createElement($r,{size:14}),onClick:()=>e.onUnpin(e.resource),"aria-label":`Unpin ${ft(e.resource)}`},"Unpin"),e.onDetails&&D.createElement(Ge.Item,{icon:D.createElement(zr,{size:14}),onClick:()=>e.onDetails(e.resource),"aria-label":`Details ${ft(e.resource)}`},"Details"),e.onEdit&&D.createElement(Ge.Item,{icon:D.createElement(Gr,{size:14}),onClick:()=>e.onEdit(e.resource),"aria-label":`Edit ${ft(e.resource)}`},"Edit"),e.onDelete&&D.createElement(D.Fragment,null,D.createElement(Ge.Divider,null),D.createElement(Ge.Label,null,"Danger zone"),D.createElement(Ge.Item,{color:"red",icon:D.createElement(Zo,{size:14}),onClick:()=>e.onDelete(e.resource),"aria-label":`Delete ${ft(e.resource)}`},"Delete")))}function Ap(e){let o=Mp(e.history,e.resource);return o?D.createElement(Ze,{resource:e.resource,padding:!0,popupMenuItems:D.createElement(Ro,{...e})},D.createElement(fl,{original:o,revised:e.resource})):D.createElement(Ze,{resource:e.resource,padding:!0,popupMenuItems:D.createElement(Ro,{...e})},D.createElement("h3",null,"Created"),D.createElement(Da,{value:e.resource,ignoreMissingValues:!0,forceUseInput:!0}))}function Mp(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 Fp(e){let{classes:o}=Bp(),r=!e.resource.priority||e.resource.priority==="routine"?void 0:o.pinnedComment;return D.createElement(Ze,{resource:e.resource,profile:e.resource.sender,dateTime:e.resource.sent,padding:!0,className:r,popupMenuItems:D.createElement(Ro,{...e})},D.createElement("p",null,e.resource.payload?.[0]?.contentString))}function wp(e){let o=e.resource.content?.contentType,t=o&&!o.startsWith("image/")&&!o.startsWith("video/")&&o!=="application/pdf";return D.createElement(Ze,{resource:e.resource,padding:!!t,popupMenuItems:D.createElement(Ro,{...e})},D.createElement(Oe,{value:e.resource.content}))}function Op(e){return D.createElement(Ze,{resource:e.resource,padding:!0,popupMenuItems:D.createElement(Ro,{...e})},D.createElement(Pp,null,D.createElement("pre",null,e.resource.outcomeDesc)))}function Ep(e){return D.createElement(Ze,{resource:e.resource,padding:!0,popupMenuItems:D.createElement(Ro,{...e})},D.createElement(Pa,{value:e.resource}))}function Lp(e){if(e.lengthComputable){let o=100*e.loaded/e.total;return`Uploaded: ${ka(e.loaded)} / ${ka(e.total)} ${o.toFixed(2)}%`}return`Uploaded: ${ka(e.loaded)}`}function ka(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 YA(e){return Rp.createElement(Ye,{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 gl from"react";function Jt(e){let{children:o,...t}=e;return gl.createElement(je,null,gl.createElement(Lo,{...t},o))}import{createReference as $t}from"@medplum/core";import Np from"react";function dM(e){return Np.createElement(Ye,{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:$t(o),subject:o.subject,sender:$t(t),sent:new Date().toISOString(),payload:[{contentString:r}]}),createMedia:(o,t,r)=>({resourceType:"Media",status:"completed",encounter:$t(o),subject:o.subject,operator:$t(t),issued:new Date().toISOString(),content:r})})}import{Button as _x,Loader as Zx,Table as Yx}from"@mantine/core";import{normalizeOperationOutcome as eI}from"@medplum/core";import re,{useEffect as Kl,useRef as jl,useState as tr}from"react";import{evalFhirPath as Hp}from"@medplum/core";import Vp from"react";function hl(e){let o;try{o=Hp(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 Vp.createElement(me,{value:o[0]||"",propertyType:e.propertyType})}import{ActionIcon as Rx,Button as Go,Center as er,createStyles as Nx,Group as or,Loader as Hx,Menu as Xl,Pagination as Vx,Table as qx,Text as Ra,UnstyledButton as Gx}from"@mantine/core";import{DEFAULT_SEARCH_COUNT as qa,formatSearchQuery as Ux}from"@medplum/core";import S,{useCallback as Jl,useEffect as $l,useRef as Qx,useState as Na}from"react";import{Box as qp,Button as Gp,Modal as Up,Text as Qp}from"@mantine/core";import No from"react";function yl(e){return No.createElement(Up,{title:"Export",closeButtonProps:{"aria-label":"Close"},opened:e.visible,onClose:e.onCancel},No.createElement(qp,{display:"flex",sx:{justifyContent:"space-between"}},e.exportCsv&&No.createElement(Cl,{text:"CSV",exportLogic:e.exportCsv,onCancel:e.onCancel}),e.exportTransactionBundle&&No.createElement(Cl,{text:"Transaction Bundle",exportLogic:e.exportTransactionBundle,onCancel:e.onCancel})),No.createElement(Qp,{sx:{marginTop:"10px",marginLeft:"2px"}},"Limited to 1000 records"))}function Cl(e){return No.createElement(Gp,{onClick:()=>{e.exportLogic(),e.onCancel()}},`Export as ${e.text}`)}import{Button as Yp,Group as ex,Modal as ox,MultiSelect as tx,Stack as rx}from"@mantine/core";import{getDataType as ax,getSearchParameters as nx,stringify as fx}from"@medplum/core";import Vo,{useEffect as lx,useMemo as sx,useRef as ix,useState as Ll}from"react";import{capitalize as zp,DEFAULT_SEARCH_COUNT as Wp,evalFhirPathTyped as Xp,formatDateTime as Jp,Operator as F}from"@medplum/core";import Kt from"react";var $p={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]},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 lt(e,o){return{...e,filters:o,offset:0,name:void 0}}function kM(e){return lt(e,[])}function jt(e,o){return lt(e,(e.filters??[]).filter(t=>t.code!==o))}function Ho(e,o,t,r,a){a&&(e=jt(e,o));let n=[];return e.filters&&n.push(...e.filters),n.push({code:o,operator:t,value:r??""}),lt(e,n)}function BM(e,o){if(e.fields?.includes(o))return e;let t=[];return e.fields&&t.push(...e.fields),t.push(o),{...e,fields:t,name:void 0}}function Sl(e,o){if(!e.filters)return e;let t=[...e.filters];return t.splice(o,1),{...e,filters:t,name:void 0}}function bl(e,o){return Ba(e,o,-1)}function Pl(e,o){return Ba(e,o,0)}function Dl(e,o){return Ba(e,o,1)}function Ba(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),Ma(e,o,r,a)}function Tl(e,o){return Aa(e,o,-1)}function kl(e,o){return Aa(e,o,0)}function Bl(e,o){return Aa(e,o,1)}function Aa(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),Ma(e,o,r,a)}function Al(e,o){let t=new Date;return t.setMonth(0),t.setDate(1),t.setHours(0,0,0,0),Ma(e,o,t,new Date)}function Ma(e,o,t,r){return e=jt(e,o),e=vl(e,o,F.GREATER_THAN_OR_EQUALS,t),e=vl(e,o,F.LESS_THAN_OR_EQUALS,r),e}function vl(e,o,t,r){return Ho(e,o,t,r.toISOString())}function Fa(e,o,t=!0){return Ho(e,o,F.MISSING,t.toString())}function jp(e,o){return e.offset===o?e:{...e,offset:o,name:void 0}}function Ml(e,o){let t=e.count??Wp,r=(o-1)*t;return jp(e,r)}function wa(e,o,t){return o===Fl(e)&&t!==void 0&&t===wl(e)?e:{...e,sortRules:[{code:o,descending:!!t}],name:void 0}}function AM(e,o){let t=!1;return Fl(e)===o&&(t=!wl(e)),wa(e,o,t)}function Fl(e){let o=e.sortRules;if(!o||o.length===0)return;let t=o[0].code;return t.startsWith("-")?t.substr(1):t}function wl(e){let o=e.sortRules;return!o||o.length===0?!1:!!o[0].descending}function Ol(e){return $p[e.type]}function st(e){return Kp[e]??""}function Pe(e){let o=e;return o.includes(".")&&(o=o.split(".").pop()),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.toLowerCase()==="id"?"ID":o.split(/\s/).map(zp).join(" "))}function El(e,o){let t=o.name;return t==="id"?e.id:t==="meta.versionId"?e.meta?.versionId:t==="_lastUpdated"?Jp(e.meta?.lastUpdated):o.elementDefinition&&`${e.resourceType}.${o.name}`===o.elementDefinition.path?_p(e,o.elementDefinition):o.searchParams&&o.searchParams.length===1&&o.name===o.searchParams[0].code?Zp(e,o.searchParams[0]):null}function _p(e,o){let t=o.path?.split(".")?.pop()?.replaceAll("[x]","")??"",[r,a]=Ce({type:e.resourceType,value:e},t);return r?Kt.createElement(me,{property:o,propertyType:a,value:r,maxWidth:200,ignoreMissingValues:!0,link:!1}):null}function Zp(e,o){let t=Xp(o.expression,[{type:e.resourceType,value:e}]);return!t||t.length===0?null:Kt.createElement(Kt.Fragment,null,t.map((r,a)=>Kt.createElement(me,{key:`${a}-${t.length}`,propertyType:r.type,value:r.value,maxWidth:200,ignoreMissingValues:!0,link:!1})))}function Rl(e){let o=ix(!1),[t,r]=Ll({search:JSON.parse(fx(e.search))}),[a,n]=Ll(!1);lx(()=>{r({search:e.search})},[e.search]);let f=sx(()=>{if(!e.visible)return[];let l=e.search.resourceType,i=ax(l),u=nx(l);return ux(i,u).sort((c,d)=>c.localeCompare(d)).map(c=>({value:c,label:Pe(c)}))},[e.visible,e.search.resourceType]);if(!e.visible)return null;function s(l){r({search:{...t.search,fields:l}})}return Vo.createElement(ox,{title:"Fields",closeButtonProps:{"aria-label":"Close"},opened:e.visible,onClose:()=>{e.onCancel()},size:"auto",withOverlay:!0,closeOnClickOutside:!1,overlayProps:{onMouseDownCapture:()=>{o.current=a},onClick:()=>{o.current||e.onCancel(),o.current=!1},children:Vo.createElement("div",{"data-testid":"overlay-child"})}},Vo.createElement(rx,null,Vo.createElement(tx,{withinPortal:!0,style:{width:550},placeholder:"Select fields to display",data:f,value:t.search.fields??[],onChange:s,onDropdownOpen:()=>n(!0),onDropdownClose:()=>n(!1),maxDropdownHeight:"250px",dropdownPosition:"bottom",clearButtonProps:{"aria-label":"Clear selection"},clearable:!0,searchable:!0}),Vo.createElement(ex,{position:"right"},Vo.createElement(Yp,{onClick:()=>e.onOk(t.search)},"OK"))))}function ux(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(Pe(n));if(o)for(let n of Object.keys(o)){let f=Pe(n);!r.has(n)&&!a.has(f)&&(t.push(n),r.add(n),a.add(f))}return t}import{Button as ut,Group as hx,Modal as Cx,NativeSelect as Hl}from"@mantine/core";import{getSearchParameters as yx,stringify as Vl}from"@medplum/core";import E,{useEffect as vx,useRef as Gl,useState as Ea}from"react";import{formatDateTime as dx,getSearchParameterDetails as cx,globalSchema as mx,Operator as Nl,SearchParameterType as px}from"@medplum/core";import it from"react";function _t(e){let{resourceType:o,filter:t}=e,r=mx.types[o].searchParams?.[t.code];if(r){if(r.type==="reference"&&(t.operator===Nl.EQUALS||t.operator===Nl.NOT_EQUALS))return it.createElement(Ee,{value:{reference:t.value}});let a=cx(o,r);if(t.code==="_lastUpdated"||a.type===px.DATETIME)return it.createElement(it.Fragment,null,dx(t.value))}return it.createElement(it.Fragment,null,t.value)}import{Checkbox as xx,TextInput as Oa}from"@mantine/core";import{getSearchParameterDetails as Ix,SearchParameterType as qo}from"@medplum/core";import io from"react";function Zt(e){let o=Ix(e.resourceType,e.searchParam),t="filter-value";switch(o.type){case qo.REFERENCE:return io.createElement(Oo,{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 qo.BOOLEAN:return io.createElement(xx,{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 qo.DATE:return io.createElement(Oa,{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 qo.DATETIME:return io.createElement(ke,{name:t,defaultValue:e.defaultValue,autoFocus:e.autoFocus,onChange:e.onChange});case qo.NUMBER:return io.createElement(Oa,{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 qo.QUANTITY:return io.createElement(Se,{name:t,defaultValue:gx(e.defaultValue),autoFocus:e.autoFocus,onChange:r=>{r?e.onChange(`${r.value}`):e.onChange("")}});default:return io.createElement(Oa,{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 gx(e){if(e){let[o,t,r]=e.split("|");if(o)return{value:parseFloat(o),system:t,unit:r}}}function Ul(e){let[o,t]=Ea(JSON.parse(Vl(e.search))),[r,a]=Ea(-1),n=Gl(o);n.current=o,vx(()=>{t(JSON.parse(Vl(e.search)))},[e.search]);function f(u){t(Ho(n.current,u.code,u.operator,u.value))}if(!e.visible)return null;let s=e.search.resourceType,l=yx(s)??{},i=o.filters||[];return E.createElement(Cx,{title:"Filters",closeButtonProps:{"aria-label":"Close"},size:900,opened:e.visible,onClose:e.onCancel},E.createElement("div",null,E.createElement("table",null,E.createElement("colgroup",null,E.createElement("col",{style:{width:200}}),E.createElement("col",{style:{width:200}}),E.createElement("col",{style:{width:380}}),E.createElement("col",{style:{width:120}})),E.createElement("thead",null,E.createElement("tr",null,E.createElement("th",null,"Field"),E.createElement("th",null,"Operation"),E.createElement("th",null,"Value"),E.createElement("th",null,"Actions"))),E.createElement("tbody",null,i.map((u,c)=>c===r?E.createElement(ql,{key:`filter-${u.code}-${u.operator}-${u.value}-input`,resourceType:s,searchParams:l,defaultValue:u,okText:"Save",onOk:d=>{let x=[...i];x[c]=d,t(lt(n.current,x)),a(-1)},onCancel:()=>a(-1)}):E.createElement(Sx,{key:`filter-${u.code}-${u.operator}-${u.value}-display`,resourceType:s,searchParams:l,filter:u,onEdit:()=>a(c),onDelete:()=>t(Sl(n.current,c))})),E.createElement(ql,{resourceType:s,searchParams:l,okText:"Add",onOk:f})))),E.createElement(hx,{position:"right",mt:"xl"},E.createElement(ut,{onClick:()=>e.onOk(n.current)},"OK")))}function Sx(e){let{filter:o}=e;return E.createElement("tr",null,E.createElement("td",null,Pe(o.code)),E.createElement("td",null,st(o.operator)),E.createElement("td",null,E.createElement(_t,{resourceType:e.resourceType,filter:o})),E.createElement("td",null,E.createElement(ut,{compact:!0,variant:"outline",onClick:e.onEdit},"Edit"),E.createElement(ut,{compact:!0,variant:"outline",onClick:e.onDelete},"Delete")))}function ql(e){let[o,t]=Ea(e.defaultValue??{}),r=Gl(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&&Ol(s);return E.createElement("tr",null,E.createElement("td",null,E.createElement(Hl,{"data-testid":"filter-field",defaultValue:r.current.code,onChange:i=>a(i.currentTarget.value),data:["",...Object.keys(e.searchParams).map(i=>({value:i,label:Pe(i)}))]})),E.createElement("td",null,l&&E.createElement(Hl,{"data-testid":"filter-operation",defaultValue:o.operator,onChange:i=>n(i.currentTarget.value),data:["",...l.map(i=>({value:i,label:st(i)}))]})),E.createElement("td",null,s&&o.operator&&E.createElement(Zt,{resourceType:e.resourceType,searchParam:s,defaultValue:o.value,onChange:f})),E.createElement("td",null,o.code&&o.operator&&E.createElement(ut,{compact:!0,variant:"outline",onClick:()=>{e.onOk(r.current),t({})}},e.okText),e.onCancel&&E.createElement(ut,{compact:!0,variant:"outline",onClick:e.onCancel},"Cancel")))}import{Button as bx,Grid as La,Modal as Px}from"@mantine/core";import uo,{useState as Dx}from"react";function Ql(e){let[o,t]=Dx(e.defaultValue??"");if(!e.visible||!e.searchParam||!e.filter)return null;function r(){e.onOk({...e.filter,value:o})}return uo.createElement(Px,{title:e.title,size:"xl",opened:e.visible,onClose:e.onCancel},uo.createElement($,{onSubmit:r},uo.createElement(La,null,uo.createElement(La.Col,{span:10},uo.createElement(Zt,{resourceType:e.resourceType,searchParam:e.searchParam,defaultValue:o,autoFocus:!0,onChange:t})),uo.createElement(La.Col,{span:2},uo.createElement(bx,{onClick:r,fullWidth:!0},"OK")))))}import{Menu as M}from"@mantine/core";import{Operator as ue}from"@medplum/core";import m from"react";function zl(e){if(!e.searchParams)return null;function o(n,f){a(wa(e.search,n.code,f))}function t(n){a(jt(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(Tx,{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},Pe(n.code))))}function Tx(e){switch(e.searchParam.type){case"date":return m.createElement(kx,{...e});case"number":case"quantity":return m.createElement(Bx,{...e});case"reference":return m.createElement(Ax,{...e});case"string":case"token":case"uri":return m.createElement(Mx,{...e});default:return m.createElement(m.Fragment,null,"Unknown search param type: ",e.searchParam.type)}}function kx(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(Co,{size:14}),onClick:()=>e.onPrompt(o,ue.EQUALS)},"Equals..."),m.createElement(M.Item,{icon:m.createElement(ho,{size:14}),onClick:()=>e.onPrompt(o,ue.NOT_EQUALS)},"Does not equal..."),m.createElement(M.Divider,null),m.createElement(M.Item,{icon:m.createElement(vt,{size:14}),onClick:()=>e.onPrompt(o,ue.ENDS_BEFORE)},"Before..."),m.createElement(M.Item,{icon:m.createElement(yt,{size:14}),onClick:()=>e.onPrompt(o,ue.STARTS_AFTER)},"After..."),m.createElement(M.Item,{icon:m.createElement(wr,{size:14}),onClick:()=>e.onPrompt(o,ue.EQUALS)},"Between..."),m.createElement(M.Divider,null),m.createElement(M.Item,{icon:m.createElement(He,{size:14}),onClick:()=>e.onChange(Dl(e.search,t))},"Tomorrow"),m.createElement(M.Item,{icon:m.createElement(He,{size:14}),onClick:()=>e.onChange(Pl(e.search,t))},"Today"),m.createElement(M.Item,{icon:m.createElement(He,{size:14}),onClick:()=>e.onChange(bl(e.search,t))},"Yesterday"),m.createElement(M.Divider,null),m.createElement(M.Item,{icon:m.createElement(He,{size:14}),onClick:()=>e.onChange(Bl(e.search,t))},"Next Month"),m.createElement(M.Item,{icon:m.createElement(He,{size:14}),onClick:()=>e.onChange(kl(e.search,t))},"This Month"),m.createElement(M.Item,{icon:m.createElement(He,{size:14}),onClick:()=>e.onChange(Tl(e.search,t))},"Last Month"),m.createElement(M.Divider,null),m.createElement(M.Item,{icon:m.createElement(He,{size:14}),onClick:()=>e.onChange(Al(e.search,t))},"Year to date"),m.createElement(Yt,{...e}))}function Bx(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(Co,{size:14}),onClick:()=>e.onPrompt(o,ue.EQUALS)},"Equals..."),m.createElement(M.Item,{icon:m.createElement(ho,{size:14}),onClick:()=>e.onPrompt(o,ue.NOT_EQUALS)},"Does not equal..."),m.createElement(M.Divider,null),m.createElement(M.Item,{icon:m.createElement(yt,{size:14}),onClick:()=>e.onPrompt(o,ue.GREATER_THAN)},"Greater than..."),m.createElement(M.Item,{icon:m.createElement(yo,{size:14}),onClick:()=>e.onPrompt(o,ue.GREATER_THAN_OR_EQUALS)},"Greater than or equal to..."),m.createElement(M.Item,{icon:m.createElement(vt,{size:14}),onClick:()=>e.onPrompt(o,ue.LESS_THAN)},"Less than..."),m.createElement(M.Item,{icon:m.createElement(yo,{size:14}),onClick:()=>e.onPrompt(o,ue.LESS_THAN_OR_EQUALS)},"Less than or equal to..."),m.createElement(Yt,{...e}))}function Ax(e){let{searchParam:o}=e;return m.createElement(M.Dropdown,null,m.createElement(M.Item,{icon:m.createElement(Co,{size:14}),onClick:()=>e.onPrompt(o,ue.EQUALS)},"Equals..."),m.createElement(M.Item,{icon:m.createElement(ho,{size:14}),onClick:()=>e.onPrompt(o,ue.NOT)},"Does not equal..."),m.createElement(Yt,{...e}))}function Mx(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(Co,{size:14}),onClick:()=>e.onPrompt(o,ue.EQUALS)},"Equals..."),m.createElement(M.Item,{icon:m.createElement(ho,{size:14}),onClick:()=>e.onPrompt(o,ue.NOT)},"Does not equal..."),m.createElement(M.Divider,null),m.createElement(M.Item,{icon:m.createElement(Er,{size:14}),onClick:()=>e.onPrompt(o,ue.CONTAINS)},"Contains..."),m.createElement(M.Item,{icon:m.createElement(Or,{size:14}),onClick:()=>e.onPrompt(o,ue.EQUALS)},"Does not contain..."),m.createElement(Yt,{...e}))}function Yt(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(Mr,{size:14}),onClick:()=>e.onChange(Fa(e.search,t))},"Missing"),m.createElement(M.Item,{icon:m.createElement(Ar,{size:14}),onClick:()=>e.onChange(Fa(e.search,t,!1))},"Not missing"),m.createElement(M.Divider,null),m.createElement(M.Item,{icon:m.createElement(oa,{size:14}),onClick:()=>e.onClear(o)},"Clear filters"))}import{getElementDefinition as Fx,getSearchParameter as wx,getSearchParameterDetails as Ox,getSearchParameters as Ex}from"@medplum/core";function Wl(e){let o=e.resourceType,t=[];for(let r of e.fields||["id","_lastUpdated"])t.push(Lx(o,r));return t}function Lx(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=Fx(e,o),r=wx(e,o.toLowerCase());if(t&&r)return{name:o,elementDefinition:t,searchParams:[r]};if(t){let a=Ex(e),n;if(a){let f=new RegExp(`${e}\\.${o.replaceAll("[x]","")}([^\\w-]|$)`);n=Object.values(a).filter(s=>!!s.expression&&f.test(s?.expression)),n.length===0&&(n=void 0)}return{name:o,elementDefinition:t,searchParams:n}}if(r){let a=Ox(e,r);return{name:o,elementDefinition:a.elementDefinitions?.[0],searchParams:[r]}}return{name:o}}var Ha=class extends Event{constructor(t){super("change");this.definition=t}},Va=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}},zx=Nx(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 Wx(e){let{classes:o}=zx(),t=P(),[r,a]=Na(!1),[n,f]=Na(),{search:s,onLoad:l}=e,[i,u]=Na({selected:{},fieldEditorVisible:!1,filterEditorVisible:!1,exportDialogVisible:!1,filterDialogVisible:!1}),c=Qx(i);c.current=i;let d=s.total??"accurate",x=Jl(C=>{f(void 0),t.search(s.resourceType,Ux({...s,total:d,fields:void 0}),C).then(U=>{u({...c.current,searchResponse:U}),l&&l(new Va(U))}).catch(U=>{u({...c.current,searchResponse:void 0}),f(U)})},[t,s,d,l]),y=Jl(()=>{u({...c.current,searchResponse:void 0}),x({cache:"reload"})},[x]);$l(()=>{x()},[x]);function g(C,U){C.stopPropagation();let ne=C.target.checked,oe={...c.current.selected};ne?oe[U]=!0:delete oe[U],u({...c.current,selected:oe})}function T(C){C.stopPropagation();let Ne=C.target.checked,ne={},oe=c.current.searchResponse;Ne&&oe?.entry&&oe.entry.forEach(ve=>{ve.resource?.id&&(ne[ve.resource.id]=!0)}),u({...c.current,selected:ne})}function B(){let C=c.current;if(!C.searchResponse?.entry||C.searchResponse.entry.length===0)return!1;for(let U of C.searchResponse.entry)if(U.resource?.id&&!C.selected[U.resource.id])return!1;return!0}function k(C){e.onChange&&e.onChange(new Ha(C))}function A(C,U){if(bt(C.target)||C.button===2)return;R(C);let Ne=C.button===1||C.ctrlKey||C.metaKey;!Ne&&e.onClick&&e.onClick(new co(U,C)),Ne&&e.onAuxClick&&e.onAuxClick(new co(U,C))}function W(){return!!(e.onExport??e.onExportCsv??e.onExportTransactionBundle)}if($l(()=>{a(!1),t.requestSchema(e.search.resourceType).then(()=>a(!0)).catch(console.log)},[t,e.search.resourceType]),!r)return S.createElement(er,{style:{width:"100%",height:"100%"}},S.createElement(Hx,null));let v=e.checkboxesEnabled,L=Wl(s),Z=s.resourceType,ae=i.searchResponse,ro=ae?.entry?.map(C=>C.resource),ce="subtle",h="gray",H=16,we=window.innerWidth<768;return S.createElement("div",{className:o.root,"data-testid":"search-control"},!e.hideToolbar&&S.createElement(or,{position:"apart",mb:"xl"},S.createElement(or,{spacing:2},S.createElement(Go,{compact:!0,variant:ce,color:h,leftIcon:S.createElement(Nr,{size:H}),onClick:()=>u({...c.current,fieldEditorVisible:!0})},"Fields"),S.createElement(Go,{compact:!0,variant:ce,color:h,leftIcon:S.createElement(Qr,{size:H}),onClick:()=>u({...c.current,filterEditorVisible:!0})},"Filters"),e.onNew&&S.createElement(Go,{compact:!0,variant:ce,color:h,leftIcon:S.createElement(Ur,{size:H}),onClick:e.onNew},"New..."),!we&&W()&&S.createElement(Go,{compact:!0,variant:ce,color:h,leftIcon:S.createElement(ea,{size:H}),onClick:e.onExport?e.onExport:()=>u({...c.current,exportDialogVisible:!0})},"Export..."),!we&&e.onDelete&&S.createElement(Go,{compact:!0,variant:ce,color:h,leftIcon:S.createElement(Zo,{size:H}),onClick:()=>e.onDelete(Object.keys(i.selected))},"Delete..."),!we&&e.onBulk&&S.createElement(Go,{compact:!0,variant:ce,color:h,leftIcon:S.createElement(Fr,{size:H}),onClick:()=>e.onBulk(Object.keys(i.selected))},"Bulk...")),S.createElement(or,{spacing:2},ae&&S.createElement(Ra,{size:"xs",color:"dimmed"},Kx(s,ae.total),"-",jx(s,ae.total)," of"," ",`${d==="estimate"?"~":""}${ae.total?.toLocaleString()}`),S.createElement(Rx,{title:"Refresh",onClick:y},S.createElement(jr,{size:"1.125rem"})))),S.createElement(qx,{className:o.table},S.createElement("thead",null,S.createElement("tr",null,v&&S.createElement("th",null,S.createElement("input",{type:"checkbox",value:"checked","aria-label":"all-checkbox","data-testid":"all-checkbox",checked:B(),onChange:C=>T(C)})),L.map(C=>S.createElement("th",{key:C.name},S.createElement(Xl,{shadow:"md",width:240,position:"bottom-end"},S.createElement(Xl.Target,null,S.createElement(Gx,{className:o.control},S.createElement(or,{position:"apart",noWrap:!0},S.createElement(Ra,{weight:500,size:"sm"},Pe(C.name)),S.createElement(er,{className:o.icon},S.createElement(Tr,{size:14,stroke:1.5}))))),S.createElement(zl,{search:e.search,searchParams:C.searchParams,onPrompt:(U,Ne)=>{u({...c.current,filterDialogVisible:!0,filterDialogSearchParam:U,filterDialogFilter:Ne})},onChange:U=>{k(U)}}))))),!e.hideFilters&&S.createElement("tr",null,v&&S.createElement("th",null),L.map(C=>S.createElement("th",{key:C.name},C.searchParams&&S.createElement(Xx,{resourceType:Z,searchParams:C.searchParams,filters:e.search.filters}))))),S.createElement("tbody",null,ro?.map(C=>C&&S.createElement("tr",{key:C.id,className:o.tr,"data-testid":"search-control-row",onClick:U=>A(U,C),onAuxClick:U=>A(U,C)},v&&S.createElement("td",null,S.createElement("input",{type:"checkbox",value:"checked","data-testid":"row-checkbox","aria-label":`Checkbox for ${C.id}`,checked:!!i.selected[C.id],onChange:U=>g(U,C.id)})),L.map(U=>S.createElement("td",{key:U.name},El(C,U))))))),ro?.length===0&&S.createElement(je,null,S.createElement(er,{style:{height:150}},S.createElement(Ra,{size:"xl",color:"dimmed"},"No results"))),ae?.total!==void 0&&ae.total>0&&S.createElement(er,{m:"md",p:"md"},S.createElement(Vx,{value:Jx(s),total:$x(s,ae.total),onChange:C=>k(Ml(s,C)),getControlProps:C=>{switch(C){case"previous":return{"aria-label":"Previous page"};case"next":return{"aria-label":"Next page"};default:return{}}}})),n&&S.createElement("div",{"data-testid":"search-error"},S.createElement("pre",{style:{textAlign:"left"}},JSON.stringify(n,void 0,2))),S.createElement(Rl,{search:e.search,visible:c.current.fieldEditorVisible,onOk:C=>{k(C),u({...c.current,fieldEditorVisible:!1})},onCancel:()=>{u({...c.current,fieldEditorVisible:!1})}}),S.createElement(Ul,{search:e.search,visible:c.current.filterEditorVisible,onOk:C=>{k(C),u({...c.current,filterEditorVisible:!1})},onCancel:()=>{u({...c.current,filterEditorVisible:!1})}}),S.createElement(yl,{visible:c.current.exportDialogVisible,exportCsv:e.onExportCsv,exportTransactionBundle:e.onExportTransactionBundle,onCancel:()=>{u({...c.current,exportDialogVisible:!1})}}),S.createElement(Ql,{key:i.filterDialogSearchParam?.code,visible:c.current.filterDialogVisible,title:i.filterDialogSearchParam?.code?Pe(i.filterDialogSearchParam.code):"",resourceType:Z,searchParam:i.filterDialogSearchParam,filter:i.filterDialogFilter,defaultValue:"",onOk:C=>{k(Ho(e.search,C.code,C.operator,C.value)),u({...c.current,filterDialogVisible:!1})},onCancel:()=>{u({...c.current,filterDialogVisible:!1})}}))}var qF=S.memo(Wx);function Xx(e){let o=(e.filters??[]).filter(t=>e.searchParams.find(r=>r.code===t.code));return o.length===0?S.createElement("span",null,"no filters"):S.createElement(S.Fragment,null,o.map(t=>S.createElement("div",{key:`filter-${t.code}-${t.operator}-${t.value}`},st(t.operator),"\xA0",S.createElement(_t,{resourceType:e.resourceType,filter:t}))))}function Jx(e){return Math.floor((e.offset??0)/(e.count??qa))+1}function $x(e,o){let t=e.count??qa;return Math.ceil(o/t)}function Kx(e,o){return Math.min(o,(e.offset??0)+1)}function jx(e,o){return Math.min(o,((e.offset??0)+1)*(e.count??qa))}function oI(e){let o=P(),[t,r]=tr(!1),[a,n]=tr(),{query:f,fields:s}=e,[l,i]=tr(),[u,c]=tr({}),d=jl();d.current=l;let x=jl({});x.current=u,Kl(()=>{n(void 0),o.graphql(f).then(i).catch(A=>n(eI(A)))},[o,f]);function y(A,W){A.stopPropagation();let L=A.target.checked,Z={...x.current};L?Z[W]=!0:delete Z[W],c(Z)}function g(A){A.stopPropagation();let v=A.target.checked,L={},Z=d.current?.data.ResourceList;v&&Z&&Z.forEach(ae=>{ae.id&&(L[ae.id]=!0)}),c(L)}function T(){let A=d.current?.data.ResourceList;if(!A||A.length===0)return!1;for(let W of A)if(W.id&&!x.current[W.id])return!1;return!0}function B(A,W){bt(A.target)||(R(A),A.button!==1&&e.onClick&&e.onClick(new co(W,A)),A.button===1&&e.onAuxClick&&e.onAuxClick(new co(W,A)))}if(Kl(()=>{o.requestSchema(e.resourceType).then(()=>r(!0)).catch(console.log)},[o,e.resourceType]),!t)return re.createElement(Zx,null);let k=e.checkboxesEnabled;return re.createElement("div",{onContextMenu:A=>R(A),"data-testid":"search-control"},re.createElement(Yx,null,re.createElement("thead",null,re.createElement("tr",null,k&&re.createElement("th",null,re.createElement("input",{type:"checkbox",value:"checked","aria-label":"all-checkbox","data-testid":"all-checkbox",checked:T(),onChange:A=>g(A)})),s.map(A=>re.createElement("th",{key:A.name},A.name)))),re.createElement("tbody",null,l?.data.ResourceList.map(A=>A&&re.createElement("tr",{key:A.id,"data-testid":"search-control-row",onClick:W=>B(W,A),onAuxClick:W=>B(W,A)},k&&re.createElement("td",null,re.createElement("input",{type:"checkbox",value:"checked","data-testid":"row-checkbox","aria-label":`Checkbox for ${A.id}`,checked:!!u[A.id],onChange:W=>y(W,A.id)})),s.map(W=>re.createElement("td",{key:W.name},re.createElement(hl,{propertyType:W.propertyType,path:W.fhirPath,resource:A}))))))),l?.data.ResourceList.length===0&&re.createElement("div",{"data-testid":"empty-search"},"No results"),a&&re.createElement("div",{"data-testid":"search-error"},re.createElement("pre",{style:{textAlign:"left"}},JSON.stringify(a,void 0,2))),e.onBulk&&re.createElement(_x,{onClick:()=>e.onBulk(Object.keys(x.current))},"Bulk..."))}var KF=re.memo(oI);import mo from"react";function eo(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{Box as lI,SimpleGrid as sI}from"@mantine/core";import rr from"react";import{Box as _l,Flex as Ga,Group as tI,Paper as rI,RingProgress as Yl,Text as po,Title as Ua}from"@mantine/core";import{formatCodeableConcept as Zl}from"@medplum/core";import X from"react";function es(e){let{group:o}=e;return X.createElement(rI,{withBorder:!0,radius:"md",p:"xs",display:"flex",sx:{alignItems:"center",justifyContent:"center"}},X.createElement(tI,null,o.measureScore&&X.createElement(nI,{group:o}),!o.measureScore&&X.createElement(aI,{group:o})))}function os(e){let{measure:o}=e;return X.createElement(X.Fragment,null,X.createElement(po,{fz:"md",fw:500,mb:8},o.title),X.createElement(po,{fz:"xs",c:"dimmed",mb:8},o.subtitle))}function aI(e){let{group:o}=e,t=o.population,r=t?.find(l=>Zl(l.code)==="numerator"),a=t?.find(l=>Zl(l.code)==="denominator"),n=r?.count,f=a?.count;if(f===0)return X.createElement(_l,null,X.createElement(Ua,{order:3},"Not Applicable"),X.createElement(po,null,`Denominator: ${f}`));if(n===void 0||f===void 0)return X.createElement(_l,null,X.createElement(Ua,{order:3},"Insufficient Data"),X.createElement(po,null,`Numerator: ${n}`),X.createElement(po,null,`Denominator: ${f}`));let s=n/f*100;return X.createElement(Yl,{size:120,thickness:12,roundCaps:!0,sections:[{value:s,color:ts(s)}],label:X.createElement(Ga,{justify:"center"},X.createElement(po,{fw:700,fz:18},n," / ",f))})}function nI(e){let{group:o}=e,t=o.measureScore?.unit??o.measureScore?.code;return X.createElement(X.Fragment,null,t==="%"?X.createElement(Yl,{size:120,thickness:12,roundCaps:!0,sections:[{value:fI(o),color:ts(o?.measureScore?.value??0)}],label:X.createElement(Ga,{justify:"center"},X.createElement(po,{fw:700,fz:18},X.createElement(Ke,{value:o.measureScore})))}):X.createElement(Ga,{h:120,align:"center"},X.createElement(Ua,{order:3},X.createElement(Ke,{value:o.measureScore}))))}function fI(e){let o=e.measureScore?.value,t=e.measureScore?.unit;return o?o<=1&&t==="%"?o*100:o:0}function ts(e){return e<=33?"red":e<=67?"yellow":"green"}function sw(e){let o=z(e.measureReport),[t]=yn("Measure",{url:o?.measure});return o?rr.createElement(lI,null,t&&rr.createElement(os,{measure:t}),rr.createElement(sI,{cols:3,breakpoints:[{maxWidth:"48rem",cols:2,spacing:"md"},{maxWidth:"36rem",cols:1,spacing:"sm"}],spacing:"md"},o.group?.map((r,a)=>rr.createElement(es,{key:r.id??a,group:r})))):null}import{Alert as iI}from"@mantine/core";import{operationOutcomeIssueToString as uI}from"@medplum/core";import Qa from"react";function Uo(e){let o=e.outcome?.issue||e.issues;return!o||o.length===0?null:Qa.createElement(iI,{icon:Qa.createElement(no,{size:16}),color:"red"},o.map(t=>Qa.createElement("div",{"data-testid":"text-field-error",key:t.details?.text},uI(t))))}import{createReference as ar}from"@medplum/core";import dI,{useCallback as cI}from"react";function yw(e){let o=cI((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 dI.createElement(Ye,{value:e.patient,loadTimelineResources:o,createCommunication:(t,r,a)=>({resourceType:"Communication",status:"completed",subject:ar(t),sender:ar(r),sent:new Date().toISOString(),payload:[{contentString:a}]}),createMedia:(t,r,a)=>({resourceType:"Media",status:"completed",subject:ar(t),operator:ar(r),issued:new Date().toISOString(),content:a})})}import{Anchor as as,Button as mI,createStyles as pI,NativeSelect as xI,Stack as II,TextInput as Wa}from"@mantine/core";import{getReferenceString as gI}from"@medplum/core";import V,{useEffect as rs,useRef as ns,useState as dt}from"react";var fs=pI(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 Rw(e){let o=P(),t=z(e.value),[r,a]=dt(!1),[n,f]=dt(),[s,l]=dt(),[i,u]=dt();function c(){l(void 0)}function d(){f(void 0)}let x=ns();if(x.current=i,rs(()=>{o.requestSchema("PlanDefinition").then(()=>a(!0)).catch(console.log)},[o]),rs(()=>(u(bI(t??{resourceType:"PlanDefinition"})),document.addEventListener("mouseover",c),document.addEventListener("click",d),()=>{document.removeEventListener("mouseover",c),document.removeEventListener("click",d)}),[t]),!r||!i)return null;function y(g,T){u({...x.current,[g]:T})}return V.createElement("div",null,V.createElement($,{testid:"questionnaire-form",onSubmit:()=>e.onSubmit(i)},V.createElement(Wa,{label:"Plan Title",defaultValue:i.title,onChange:g=>y("title",g.currentTarget.value)}),V.createElement(ls,{actions:i.action||[],selectedKey:n,setSelectedKey:f,hoverKey:s,setHoverKey:l,onChange:g=>y("action",g)}),V.createElement(mI,{type:"submit"},"Save")))}function ls(e){let{classes:o}=fs(),t=ns();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 V.createElement("div",{className:o.section},e.actions.map(f=>V.createElement("div",{key:f.id},V.createElement(hI,{action:f,selectedKey:e.selectedKey,setSelectedKey:e.setSelectedKey,hoverKey:e.hoverKey,setHoverKey:e.setHoverKey,onChange:r,onRemove:()=>n(f)}))),V.createElement("div",{className:o.bottomActions},V.createElement(as,{href:"#",onClick:f=>{R(f),a({id:is()})}},"Add action")))}function hI(e){let{classes:o,cx:t}=fs(),{action:r}=e,a=SI(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){R(u),e.setHoverKey(e.action.id)}let i=t(o.section,{[o.editing]:n,[o.hovering]:f&&!n});return V.createElement("div",{"data-testid":r.id,className:i,onClick:s,onMouseOver:l},n?V.createElement(yI,{action:r,actionType:a,onChange:e.onChange,selectedKey:e.selectedKey,setSelectedKey:e.setSelectedKey,hoverKey:e.hoverKey,setHoverKey:e.setHoverKey,onRemove:e.onRemove}):V.createElement(CI,{action:r,actionType:a}),V.createElement("div",{className:o.bottomActions},V.createElement(as,{href:"#",onClick:u=>{u.preventDefault(),e.onRemove()}},"Remove")))}var Xa={path:"PlanDefinition.action.timing[x]",min:0,max:1,description:"",isArray:!1,constraints:[],type:["dateTime","Period","Range","Timing"].map(e=>({code:e}))};function CI(e){let{action:o,actionType:t}=e,[r,a]=ss(o);return V.createElement("div",null,V.createElement("div",null,o.title||"Untitled"," ",t&&`(${t})`),o.definitionCanonical&&V.createElement("div",null,V.createElement(lo,{value:{reference:o.definitionCanonical}})),r&&V.createElement("div",null,V.createElement(me,{property:Xa,propertyType:a,value:r})))}function yI(e){let{action:o}=e,[t,r]=dt(e.actionType);function a(n,f){e.onChange({...o,[n]:f})}return V.createElement(II,{spacing:"xl"},V.createElement(Wa,{name:`actionTitle-${o.id}`,label:"Title",defaultValue:o.title,onChange:n=>a("title",n.currentTarget.value)}),V.createElement(Wa,{name:`actionDescription-${o.id}`,label:"Description",defaultValue:o.description,onChange:n=>a("description",n.currentTarget.value)}),V.createElement(xI,{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&&V.createElement(ls,{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 V.createElement(nr,{title:"Appointment",description:"The subject must schedule an appointment from the schedule.",resourceType:"Schedule",action:o,onChange:e.onChange});case"lab":return V.createElement(nr,{title:"Lab",description:"The subject must complete the following lab panel.",resourceType:"ActivityDefinition",action:o,onChange:e.onChange});case"questionnaire":return V.createElement(nr,{title:"Questionnaire",description:"The subject must complete the selected questionnaire.",resourceType:"Questionnaire",action:o,onChange:e.onChange});case"task":return V.createElement(nr,{title:"Task",description:"The subject must complete the following task.",resourceType:"ActivityDefinition",action:o,onChange:e.onChange});default:return null}})(),V.createElement(ye,{title:"Timing",description:"When the action should take place."},V.createElement(vI,{name:"timing-"+o.id,action:o,onChange:e.onChange})))}function nr(e){let{id:o,definitionCanonical:t}=e.action,r=t?.startsWith(e.resourceType+"/")?{reference:t}:void 0;return V.createElement(Vt,{name:o,resourceType:e.resourceType,defaultValue:r,loadOnFocus:!0,onChange:a=>{a?e.onChange({...e.action,definitionCanonical:gI(a)}):e.onChange({...e.action,definitionCanonical:void 0})}})}function vI(e){let o=e.action,t="timing",[r,a]=ss(o);return V.createElement(qe,{property:Xa,name:"timing[x]",defaultValue:r,defaultPropertyType:a,onChange:(n,f)=>{e.onChange(rt(o,t,f??t,Xa,n))}})}function SI(e){if(e.definitionCanonical?.startsWith("Schedule"))return"appointment";if(e.definitionCanonical?.startsWith("Questionnaire/"))return"questionnaire";if(e.definitionCanonical?.startsWith("ActivityDefinition/"))return"task"}function ss(e){return Ce({type:"PlanDefinitionAction",value:e},"timing")}var za=1;function is(e){if(e){if(e.startsWith("id-")){let o=parseInt(e.substring(3),10);isNaN(o)||(za=Math.max(za,o+1))}return e}return"id-"+za++}function bI(e){return{...e,action:us(e.action)}}function us(e){if(e)return e.map(o=>({...o,id:is(o.id),action:us(o.action)}))}import{Anchor as De,Box as Za,Button as KI,createStyles as jI,Group as _I,NativeSelect as ZI,Space as YI,Textarea as eg,TextInput as Ya,Title as og}from"@mantine/core";import{getElementDefinition as tg,isResource as rg}from"@medplum/core";import b,{useEffect as Ds,useRef as ag,useState as ur}from"react";import{Checkbox as EI,Group as LI,MultiSelect as RI,NativeSelect as NI,Radio as Cs,Textarea as HI,TextInput as Qo}from"@mantine/core";import{capitalize as ja,deepEquals as VI,formatCodeableConcept as qI,formatCoding as ir,getElementDefinition as GI,getTypedPropertyValue as oo,stringify as ys}from"@medplum/core";import J from"react";import{deepClone as PI,evalFhirPathTyped as DI,formatCoding as TI,getExtension as $a,getTypedPropertyValue as Ja,getReferenceString as kI,stringify as BI}from"@medplum/core";var fr=(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))(fr||{});function ds(e){return e.type==="choice"||e.type==="open-choice"}function cs(e,o){if(!e.enableWhen)return!0;let t=e.enableBehavior??"any";for(let r of e.enableWhen){let a=ps(o,r.question);if(r.operator==="exists"&&!r.answerBoolean&&!a?.length){if(t==="any")return!0;continue}let{anyMatch:n,allMatch:f}=MI(r,a,t);if(t==="any"&&n)return!0;if(t==="all"&&!f)return!1}return t!=="any"}function ms(e,o,t){return e.map(r=>{let a=t.answerOption?.find(f=>TI(f.valueCoding)===r||f[o]===r),n=Ja({type:"QuestionnaireItemAnswerOption",value:a},"value");return{[o]:n?.value}})}function ps(e,o){if(e)for(let t of e){if(t.linkId===o)return t.answer;if(t.item){let r=ps(t.item,o);if(r)return r}}}function AI(e,o,t){if(t==="exists")return!!e===o.value;if(e){let r=t==="="||t==="!="?t?.replace("=","~"):t,[{value:a}]=DI(`%actualAnswer ${r} %expectedAnswer`,[e],{actualAnswer:e,expectedAnswer:o});return a}else return!1}function MI(e,o,t){let r=o||[],a=Ja({type:"QuestionnaireItemEnableWhen",value:e},"answer[x]"),n=!1,f=!0;for(let s of r){let l=Ja({type:"QuestionnaireResponseItemAnswer",value:s},"value[x]"),{operator:i}=e;if(AI(l,a,i)?n=!0:f=!1,t==="any"&&n)break}return{anyMatch:n,allMatch:f}}function lr(e){let o=$a(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 sr(e,o){let t=PI(e),r=$a(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 xs(e){return{resourceType:"QuestionnaireResponse",questionnaire:kI(e),item:Is(e.item)}}function Is(e){return e?.map(Ka)??[]}function Ka(e){return{id:wI(),linkId:e.linkId,text:e.text,item:Is(e.item),answer:e.initial?.map(OI)??[]}}var FI=1;function wI(){return"id-"+FI++}function OI(e){return{...e}}function gs(e){return e.value.display||e.value.reference||BI(e.value)}function hs(e){let o=e?.item?.[0];return o&&$a(o,"http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl")?.valueCodeableConcept?.coding?.[0]?.code==="page"?e.item.length:1}function ct(e){let o=e.item,t=e.response;function r(l){let i;Array.isArray(l)?i=l:e.index>=(e.response?.answer?.length??0)?i=(e.response?.answer??[]).concat([l]):i=(e.response?.answer??[]).map((c,d)=>d===e.index?l:c)??[],e.onChange({id:t?.id,linkId:t?.linkId,text:o.text,answer:i})}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=_a(t,e.index)??oo({type:"QuestionnaireItemInitial",value:f},"value");switch(a){case"display":return J.createElement("p",{key:e.item.linkId},e.item.text);case"boolean":return J.createElement(wt,{key:e.item.linkId,title:e.item.text,htmlFor:e.item.linkId},J.createElement(EI,{id:e.item.linkId,name:e.item.linkId,defaultChecked:s?.value,onChange:l=>r({valueBoolean:l.currentTarget.checked})}));case"decimal":return J.createElement(Qo,{type:"number",step:"any",id:n,name:n,required:o.required,defaultValue:s?.value,onChange:l=>r({valueDecimal:l.currentTarget.valueAsNumber})});case"integer":return J.createElement(Qo,{type:"number",step:1,id:n,name:n,required:o.required,defaultValue:s?.value,onChange:l=>r({valueInteger:l.currentTarget.valueAsNumber})});case"date":return J.createElement(Qo,{type:"date",id:n,name:n,required:o.required,defaultValue:s?.value,onChange:l=>r({valueDate:l.currentTarget.value})});case"dateTime":return J.createElement(ke,{name:n,required:o.required,defaultValue:s?.value,onChange:l=>r({valueDateTime:l})});case"time":return J.createElement(Qo,{type:"time",id:n,name:n,required:o.required,defaultValue:s?.value,onChange:l=>r({valueTime:l.currentTarget.value})});case"string":case"url":return J.createElement(Qo,{id:n,name:n,required:o.required,defaultValue:s?.value,onChange:l=>r({valueString:l.currentTarget.value})});case"text":return J.createElement(HI,{id:n,name:n,required:o.required,defaultValue:s?.value,onChange:l=>r({valueString:l.currentTarget.value})});case"attachment":return J.createElement(LI,{py:4},J.createElement(Tt,{name:n,defaultValue:s?.value,onChange:l=>r({valueAttachment:l})}));case"reference":return J.createElement(Oo,{name:n,required:o.required,targetTypes:lr(o),defaultValue:s?.value,onChange:l=>r({valueReference:l})});case"quantity":return J.createElement(Se,{name:n,required:o.required,defaultValue:s?.value,onChange:l=>r({valueQuantity:l}),disableWheel:!0});case"choice":case"open-choice":return JI(o)&&!o.answerValueSet?J.createElement(UI,{name:n,item:o,initial:f,response:t,onChangeAnswer:l=>r(l)}):J.createElement(QI,{name:n,item:o,initial:f,response:t,onChangeAnswer:l=>r(l)});default:return null}}function UI(e){let{name:o,item:t,initial:r,response:a}=e;if(!t.answerOption?.length)return J.createElement(bs,null);let n=oo({type:"QuestionnaireItemInitial",value:r},"value"),f=[""];for(let l of t.answerOption){let i=oo({type:"QuestionnaireItemAnswerOption",value:l},"value");f.push(vs(i))}let s=_a(a)??n;if(t.repeats){let{propertyName:l,data:i}=$I(e.item),u=WI(a);return J.createElement(RI,{data:i,placeholder:"Select items",searchable:!0,defaultValue:u||[vs(n)],onChange:c=>{let d=ms(c,l,t);e.onChangeAnswer(d)}})}return J.createElement(NI,{id:o,name:o,onChange:l=>{let i=l.currentTarget.selectedIndex;if(i===0){e.onChangeAnswer({});return}let u=t.answerOption[i-1],c=oo({type:"QuestionnaireItemAnswerOption",value:u},"value"),d="value"+ja(c.type);e.onChangeAnswer({[d]:c.value})},defaultValue:ir(s?.value)||s?.value,data:f})}function QI(e){let{name:o,item:t,initial:r,onChangeAnswer:a,response:n}=e;return!t.answerOption?.length&&!t.answerValueSet?J.createElement(bs,null):t.answerValueSet?J.createElement(Et,{name:o,binding:t.answerValueSet,onChange:f=>a({valueCoding:f})}):J.createElement(zI,{name:n?.id??o,item:t,initial:r,response:n,onChangeAnswer:a})}function zI(e){let{name:o,item:t,initial:r,onChangeAnswer:a,response:n}=e,f=GI("QuestionnaireItemAnswerOption","value[x]"),s=oo({type:"QuestionnaireItemInitial",value:r},"value"),l=[],i;if(t.answerOption)for(let d=0;d<t.answerOption.length;d++){let x=t.answerOption[d],y=`${o}-option-${d}`,g=oo({type:"QuestionnaireItemAnswerOption",value:x},"value");s&&ys(g)===ys(s)&&(i=y),l.push([y,g])}let u=_a(n),c=XI(l,u);return J.createElement(Cs.Group,{name:o,value:c??i,onChange:d=>{let x=l.find(y=>y[0]===d);if(x){let y=x[1],g="value"+ja(y.type);a({[g]:y.value})}}},l.map(([d,x])=>J.createElement(Cs,{key:d,id:d,value:d,py:4,label:J.createElement(me,{property:f,propertyType:x.type,value:x.value})})))}function bs(){return J.createElement(Qo,{disabled:!0,placeholder:"No Answers Defined"})}function Ps(e){return oo({type:"QuestionnaireItemAnswer",value:e},"value")}function _a(e,o=0){let t=e.answer;return Ps(t?.[o]??{})}function WI(e){let o=e.answer;return o?o.map(r=>Ps(r)).map(r=>ir(r?.value)||r?.value):[]}function XI(e,o){return e.find(t=>VI(t[1].value,o?.value))?.[0]}function vs(e){if(e)return e.type==="CodeableConcept"?qI(e.value):e.type==="Coding"?ir(e.value):e.type==="Reference"?gs(e):e.value.toString()}function JI(e){return!!e.extension?.some(o=>o.url==="http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl"&&o.valueCodeableConcept?.coding?.[0]?.code==="drop-down")}function $I(e){if(e.answerOption?.length===0)return{propertyName:"",data:[]};let o=e.answerOption[0],t=oo({type:"QuestionnaireItemAnswerOption",value:o},"value"),r="value"+ja(t.type),a=(e.answerOption??[]).map(n=>({value:Ss(n,r),label:Ss(n,r)}));return{propertyName:r,data:a}}function Ss(e,o){return ir(e.valueCoding)||e[o]?.toString()}var ng=jI(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 mO(e){let o=P(),t=z(e.questionnaire),[r,a]=ur(!1),[n,f]=ur(),[s,l]=ur(),[i,u]=ur();function c(){u(void 0)}function d(){l(void 0)}return Ds(()=>{o.requestSchema("Questionnaire").then(()=>a(!0)).catch(console.log)},[o]),Ds(()=>(f(ig(t??{resourceType:"Questionnaire"})),document.addEventListener("mouseover",c),document.addEventListener("click",d),()=>{document.removeEventListener("mouseover",c),document.removeEventListener("click",d)}),[t]),!r||!n?null:b.createElement("div",null,b.createElement($,{testid:"questionnaire-form",onSubmit:()=>e.onSubmit(n)},b.createElement(Ts,{item:n,selectedKey:s,setSelectedKey:l,hoverKey:i,setHoverKey:u,onChange:f}),b.createElement(KI,{type:"submit"},"Save")))}function Ts(e){let{classes:o,cx:t}=ng(),r=e.item,a=e.item,n=rg(e.item),f=n||a.type==="group",s=a.linkId??"[untitled]",l=e.selectedKey===e.item.id,i=e.hoverKey===e.item.id,u=ag();u.current=e.item;function c(v){R(v),e.setSelectedKey(e.item.id)}function d(v){R(v),e.setHoverKey(e.item.id)}function x(v){let L=u.current;e.onChange({...L,item:L.item?.map(Z=>Z.id===v.id?v:Z)})}function y(v){e.onChange({...e.item,item:[...e.item.item??[],v]})}function g(v){e.onChange({...e.item,item:e.item.item?.filter(L=>L!==v)})}function T(v,L){e.onChange({...u.current,[v]:L})}function B(v){e.onChange({...e.item,...v})}function k(v){e.onChange({...e.item,item:e.item.item?.map(L=>L===v?{...L,repeats:!L.repeats}:L)})}function A(v,L){let Z=cg(e.item.item,v,L);e.onChange({...e.item,item:Z})}let W=t(o.section,{[o.editing]:l,[o.hovering]:i&&!l});return b.createElement("div",{"data-testid":a.linkId,className:W,onClick:c,onMouseOver:d},b.createElement("div",{className:o.questionBody},l?b.createElement(b.Fragment,null,n&&b.createElement(Ya,{size:"xl",defaultValue:r.title,onChange:v=>T("title",v.currentTarget.value)}),!n&&b.createElement(eg,{autosize:!0,minRows:2,defaultValue:a.text,onChange:v=>T("text",v.currentTarget.value)}),a.type==="reference"&&b.createElement(sg,{item:a,onChange:B}),ds(a)&&b.createElement(fg,{item:a,onChange:v=>B(v)})):b.createElement(b.Fragment,null,r.title&&b.createElement(og,null,r.title),a.text&&b.createElement("div",null,a.text),!f&&b.createElement(ct,{item:a,index:0,onChange:()=>{},response:{}}))),a.item?.map((v,L)=>b.createElement("div",{key:v.id},b.createElement(Ts,{item:v,selectedKey:e.selectedKey,setSelectedKey:e.setSelectedKey,hoverKey:e.hoverKey,isFirst:L===0,isLast:L===(e.item.item??[]).length-1,setHoverKey:e.setHoverKey,onChange:x,onRemove:()=>g(v),onRepeatable:k,onMoveUp:()=>A(L,-1),onMoveDown:()=>A(L,1)}))),!f&&b.createElement("div",{className:o.topActions},l?b.createElement(b.Fragment,null,b.createElement(Ya,{size:"xs",className:o.linkIdInput,defaultValue:a.linkId,onChange:v=>T("linkId",v.currentTarget.value)}),!f&&b.createElement(ZI,{size:"xs",className:o.typeSelect,defaultValue:a.type,onChange:v=>T("type",v.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"}]})):b.createElement("div",null,s)),!n&&b.createElement(Za,{className:o.movementActions},b.createElement(Za,{className:o.columnAlignment},!e.isFirst&&b.createElement(De,{href:"#",onClick:v=>{v.preventDefault(),e.onMoveUp&&e.onMoveUp()}},b.createElement(Br,{"data-testid":"up-button",size:15,className:o.movementIcons})),!e.isLast&&b.createElement(De,{href:"#",onClick:v=>{v.preventDefault(),e.onMoveDown&&e.onMoveDown()}},b.createElement(kr,{"data-testid":"down-button",size:15,className:o.movementIcons})))),b.createElement("div",{className:o.bottomActions},f&&b.createElement(b.Fragment,null,b.createElement(De,{href:"#",onClick:v=>{v.preventDefault(),y({id:xo(),linkId:tn("q"),type:"string",text:"Question"})}},"Add item"),b.createElement(De,{href:"#",onClick:v=>{v.preventDefault(),y({id:xo(),linkId:tn("g"),type:"group",text:"Group"})}},"Add group")),n&&b.createElement(De,{href:"#",onClick:v=>{v.preventDefault(),y(dg())}},"Add Page"),l&&!n&&b.createElement(b.Fragment,null,b.createElement(De,{href:"#",onClick:v=>{v.preventDefault(),e.onRepeatable&&e.onRepeatable(a)}},a.repeats?"Remove Repeatable":"Make Repeatable"),b.createElement(De,{href:"#",onClick:v=>{v.preventDefault(),e.onRemove&&e.onRemove()}},"Remove"))))}function fg(e){let o=tg("QuestionnaireItemAnswerOption","value[x]"),t=e.item.answerOption??[];return b.createElement("div",null,e.item.answerValueSet!==void 0?b.createElement(Ya,{placeholder:"Enter Value Set",defaultValue:e.item.answerValueSet,onChange:r=>e.onChange({...e.item,answerValueSet:r.target.value})}):b.createElement(lg,{options:t,property:o,item:e.item,onChange:e.onChange}),b.createElement(Za,{display:"flex"},b.createElement(De,{href:"#",onClick:r=>{R(r),e.onChange({...e.item,answerValueSet:void 0,answerOption:[...t,{id:xo()}]})}},"Add choice"),b.createElement(YI,{w:"lg"}),b.createElement(De,{href:"#",onClick:r=>{R(r),e.onChange({...e.item,answerOption:[],answerValueSet:""})}},"Add value set")))}function lg(e){return b.createElement("div",null,e.options.map(o=>{let[t,r]=Ce({type:"QuestionnaireItemAnswerOption",value:o},"value");return b.createElement("div",{key:o.id,style:{display:"flex",flexDirection:"row",justifyContent:"space-between",alignItems:"center",width:"80%"}},b.createElement("div",null,b.createElement(qe,{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})}})),b.createElement("div",null,b.createElement(De,{href:"#",onClick:a=>{R(a),e.onChange({...e.item,answerOption:e.options.filter(n=>n.id!==o.id)})}},"Remove")))}))}function sg(e){let o=lr(e.item)??[];return b.createElement(b.Fragment,null,o.map((t,r)=>b.createElement(_I,{key:`${t}-${r}`},b.createElement(ko,{name:"resourceType",placeholder:"Resource Type",defaultValue:t,onChange:a=>{e.onChange(sr(e.item,o.map(n=>n===t?a:n)))}}),b.createElement(De,{href:"#",onClick:a=>{R(a),e.onChange(sr(e.item,o.filter(n=>n!==t)))}},"Remove"))),b.createElement(De,{href:"#",onClick:t=>{R(t),e.onChange(sr(e.item,[...o,""]))}},"Add Resource Type"))}var en=1,on=1;function tn(e){return e+en++}function xo(){return"id-"+on++}function ig(e){return{...e,id:e.id||xo(),item:ks(e.item)}}function ks(e){if(e)return e.forEach(o=>{o.id?.match(/^id-\d+$/)&&(on=Math.max(on,parseInt(o.id.substring(3),10)+1)),o.linkId?.match(/^q\d+$/)&&(en=Math.max(en,parseInt(o.linkId.substring(1),10)+1))}),e.map(o=>({...o,id:o.id||xo(),item:ks(o.item),answerOption:ug(o.answerOption)}))}function ug(e){if(e)return e.map(o=>({...o,id:o.id||xo()}))}function dg(){return{id:xo(),linkId:tn("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 cg(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{Title as bg}from"@mantine/core";import{createReference as Pg,getReferenceString as Dg}from"@medplum/core";import nn,{useEffect as Fs,useState as fn}from"react";import{Button as an,Group as yg,Stack as vg,Stepper as As}from"@mantine/core";import Te from"react";import{Anchor as mg}from"@mantine/core";import mt,{useState as pg}from"react";function dr(e){let{item:o,response:t,onChange:r}=e,[a,n]=pg(xg(o,t??{}));if(!e.checkForQuestionEnabled(o)||!t)return null;if(o.type==="display")return mt.createElement("p",{key:o.linkId},o.text);let f=o?.repeats&&o.type!=="choice"&&o.type!=="open-choice";return o.type==="boolean"?mt.createElement(ct,{key:o.linkId,item:o,response:t,onChange:s=>r([s]),index:0}):mt.createElement(ye,{key:e.item.linkId,htmlFor:e.item.linkId,title:e.item.text,withAsterisk:e.item.required},[...Array(a)].map((s,l)=>mt.createElement(ct,{key:`${o.linkId}-${l}`,item:o,response:t,onChange:i=>r([i]),index:l})),f&&mt.createElement(mg,{onClick:()=>n(s=>s+1)},"Add Item"))}function xg(e,o){if(e.type==="choice"||e.type==="open-choice")return 1;let t=o.answer;return t?.length?t.length:1}import{Anchor as Ig,Stack as gg,Title as hg}from"@mantine/core";import Le,{useState as Cg}from"react";function rn(e){let[o,t]=Cg(e.response);if(o.length===0)return null;function r(n,f){let s=o.map((l,i)=>i===f?n[0]:l);t(s),e.onChange(s)}function a(){let n=Ka(e.item);t([...o,n])}return Le.createElement(Le.Fragment,null,o.map((n,f)=>Le.createElement(Bs,{key:n.id,item:e.item,response:n,checkForQuestionEnabled:e.checkForQuestionEnabled,onChange:s=>r(s,f)})),e.item.repeats&&Le.createElement(Ig,{onClick:a},`Add Group: ${e.item.text}`))}function Bs(e){let{response:o,checkForQuestionEnabled:t,onChange:r}=e;function a(n){let s=o.item?.map(i=>n.find(c=>c.id===i.id)??i)?.concat(n.slice(1)),l={...o,item:s};r([l])}return e.checkForQuestionEnabled(e.item)?Le.createElement("div",{key:e.item.linkId},e.item.text&&Le.createElement(hg,{order:3,mb:"md"},e.item.text),Le.createElement(gg,null,e.item.item?.map(n=>n.type==="group"?n.repeats?Le.createElement(rn,{key:n.linkId,item:n,response:o.item?.filter(f=>f.linkId===n.linkId)??[],checkForQuestionEnabled:t,onChange:a}):Le.createElement(Bs,{key:n.linkId,item:n,checkForQuestionEnabled:t,response:o.item?.find(f=>f.linkId===n.linkId)??{},onChange:a}):Le.createElement(dr,{key:n.linkId,item:n,response:o.item?.find(f=>f.linkId===n.linkId),onChange:a,checkForQuestionEnabled:t})))):null}function Ms(e){let{items:o,response:t,activePage:r,onChange:a,nextStep:n,prevStep:f,numberOfPages:s,renderPages:l,submitButtonText:i,checkForQuestionEnabled:u}=e,c=o.map(d=>{let x=t?.item?.filter(g=>g.linkId===d.linkId)??[],y=d.type==="group"?Te.createElement(rn,{key:d.linkId,item:d,response:x,onChange:a,checkForQuestionEnabled:u}):Te.createElement(dr,{key:d.linkId,item:d,response:x?.[0],onChange:a,checkForQuestionEnabled:u});return l?Te.createElement(As.Step,{key:d.linkId,label:d.text},y):y});return Te.createElement(Te.Fragment,null,l&&Te.createElement(As,{active:r??0,allowNextStepsSelect:!1,p:6},c),!l&&Te.createElement(vg,null,c),Te.createElement(Sg,{activePage:r??0,numberOfPages:s,nextStep:n,prevStep:f,submitButtonText:i}))}function Sg(e){let o=e.activePage>0,t=e.activePage<e.numberOfPages-1,r=e.activePage===e.numberOfPages-1;return Te.createElement(yg,{position:"right",mt:"xl",spacing:"xs"},o&&Te.createElement(an,{onClick:e.prevStep},"Back"),t&&Te.createElement(an,{onClick:a=>{a.currentTarget.closest("form").reportValidity()&&e.nextStep()}},"Next"),r&&Te.createElement(an,{type:"submit"},e.submitButtonText??"Submit"))}function ws(e){let o=P(),t=o.getProfile(),[r,a]=fn(!1),n=z(e.questionnaire),[f,s]=fn(),[l,i]=fn(0);Fs(()=>{o.requestSchema("Questionnaire").then(()=>o.requestSchema("QuestionnaireResponse")).then(()=>a(!0)).catch(console.log)},[o]),Fs(()=>{s(n?xs(n):void 0)},[n]);function u(g){let T=f?.item??[],k={resourceType:"QuestionnaireResponse",item:Os(T,Array.isArray(g)?g:[g])};s(k)}function c(g){return cs(g,f?.item??[])}if(!r||!n)return null;let d=hs(n),x=()=>i(g=>g+1),y=()=>i(g=>g-1);return nn.createElement($,{testid:"questionnaire-form",onSubmit:()=>{e.onSubmit&&f&&e.onSubmit({...f,questionnaire:Dg(n),subject:e.subject,source:Pg(t),authored:new Date().toISOString(),status:"completed"})}},n.title&&nn.createElement(bg,null,n.title),nn.createElement(Ms,{items:n.item??[],response:f,onChange:u,renderPages:d>1,activePage:l,numberOfPages:d,submitButtonText:e.submitButtonText,checkForQuestionEnabled:c,nextStep:x,prevStep:y}))}function Tg(e,o){let t=Os(e.item??[],o.item??[]);return{...o,item:t.length>0?t:void 0,answer:o.answer&&o.answer.length>0?o.answer:e.answer}}function Os(e,o){let t=[],r=new Set;for(let a of e){let n=a.id,f=o.find(s=>s.id===n);f?(t.push(Tg(a,f)),r.add(f.id)):t.push(a)}for(let a of o)r.has(a.id)||t.push(a);return t}import{ActionIcon as cr,Button as kg,createStyles as Bg,Divider as Ag,Group as pt,NativeSelect as ln,Stack as mr,Text as Mg,TextInput as Fg}from"@mantine/core";import{formatRange as Es,getCodeBySystem as wg}from"@medplum/core";import Q,{useEffect as Og,useState as sn}from"react";var Eg=Bg(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"}})),Lg=["gender","age","gestationalAge","context","appliesTo","category"],Rg={definition:{resourceType:"ObservationDefinition"},onSubmit:()=>{}};function JO(e){e=Object.assign(Rg,e);let o=e.definition,[t,r]=sn([]),[a,n]=sn(1),[f,s]=sn(1);return Og(()=>{let y=Vg(o,s);r(qg(y.qualifiedInterval||[],n))},[o]),Q.createElement($,{testid:"reference-range-editor",onSubmit:l},Q.createElement(mr,null,t.map(y=>Q.createElement(Ng,{unit:Ug(o.quantitativeDetails?.unit),onChange:c,onAdd:d,onRemove:x,onRemoveGroup:u,key:`group-${y.id}`,intervalGroup:y}))),Q.createElement(cr,{title:"Add Group",size:"sm",onClick:y=>{R(y),i({id:`group-id-${a}`,filters:{},intervals:[]}),n(g=>g+1)}},Q.createElement(go,null)),Q.createElement(pt,{position:"right"},Q.createElement(kg,{type:"submit"},"Save")));function l(){let y=t.flatMap(g=>g.intervals).filter(g=>!Qg(g));e.onSubmit({...o,qualifiedInterval:y})}function i(y){r(g=>[...g,y])}function u(y){r(g=>g.filter(T=>T.id!==y.id))}function c(y,g){r(T=>{T=[...T];let B=T.find(A=>A.id===y),k=B?.intervals.findIndex(A=>A.id===g.id);return k!==void 0&&B?.intervals[k]&&(B.intervals[k]=g),T})}function d(y,g){g.id===void 0&&(g.id=`id-${f}`,s(T=>T+1)),r(T=>{T=[...T];let B=T.findIndex(k=>k.id===y);if(B!==-1){let k={...T[B]};g={...g,...k.filters},k.intervals=[...k.intervals,g],T[B]=k}return T})}function x(y,g){r(T=>{T=[...T];let B=T.find(k=>k.id===y);return B&&(B.intervals=B.intervals.filter(k=>k.id!==g.id)),T})}}function Ng(e){let{intervalGroup:o,unit:t}=e,{classes:r}=Eg();return Q.createElement(je,{"data-testid":o.id,className:r.section},Q.createElement(mr,{spacing:"lg"},Q.createElement(pt,{position:"right"},Q.createElement(cr,{title:"Remove Group","data-testid":`remove-group-button-${o.id}`,key:`remove-group-button-${o.id}`,size:"sm",onClick:a=>{R(a),e.onRemoveGroup(o)}},Q.createElement(We,null))),Q.createElement(Hg,{intervalGroup:o,onChange:e.onChange}),Q.createElement(Ag,null),o.intervals.map(a=>Q.createElement(mr,{key:`interval-${a.id}`,spacing:"xs"},Q.createElement(pt,null,Q.createElement(Fg,{key:`condition-${a.id}`,"data-testid":`condition-${a.id}`,defaultValue:a.condition,label:"Condition: ",size:"sm",onChange:n=>{R(n),e.onChange(o.id,{...a,condition:n.currentTarget.value.trim()})}}),Q.createElement(cr,{title:"Remove Interval",size:"sm",key:`remove-interval-${a.id}`,"data-testid":`remove-interval-${a.id}`,onClick:n=>{R(n),e.onRemove(o.id,a)}},Q.createElement(We,null))),Q.createElement(at,{onChange:n=>{e.onChange(o.id,{...a,range:n})},key:`range-${a.id}`,name:`range-${a.id}`,defaultValue:a.range}))),Q.createElement(cr,{title:"Add Interval",size:"sm",onClick:a=>{R(a),e.onAdd(o.id,{range:{low:{unit:t},high:{unit:t}}})}},Q.createElement(go,null))))}function Hg(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 Q.createElement(mr,{style:{maxWidth:"50%"}},Q.createElement(pt,null,Q.createElement(ln,{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})}}})),Q.createElement(pt,{spacing:"xs"},Q.createElement(Mg,{component:"label",htmlFor:`div-age-${o.id}`},"Age:"),Q.createElement("div",{id:`div-age-${o.id}`},Q.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})}}))),Q.createElement(ln,{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"}]}})}}}),Q.createElement(ln,{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 Vg(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 qg(e,o){let t=1,r={};for(let a of e){let n=Gg(a);n in r||(r[n]={id:`group-id-${t++}`,filters:Object.fromEntries(Lg.map(f=>[f,a[f]])),intervals:[]}),r[n].intervals.push(a)}return o(t),Object.values(r)}function Gg(e){return[`gender=${e.gender}`,`age=${Es(e.age)}`,`gestationalAge=${Es(e.gestationalAge)}`,`context=${e.context?.text}`,`appliesTo=${e.appliesTo?.map(t=>t.text).join("+")}`,`category=${e.category}`].join(":")}function Ug(e){return e&&(wg(e,"http://unitsofmeasure.org")||e.text)}function Qg(e){return e.range?.low?.value===void 0&&e.range?.high?.value===void 0}import{Button as Ls,Grid as pr,Text as zg}from"@mantine/core";import{formatDateTime as Wg,getReferenceString as Xg}from"@medplum/core";import Ie,{useEffect as Jg,useState as Rs}from"react";function t0(e){let o=P(),t=z(e.value),[r,a]=Rs(!1),[n,f]=Rs();if(Jg(()=>{t&&!r&&(o.executeBatch(s(t)).then(f).catch(console.log),a(!0))},[o,t,r]),!t||!n)return null;return Ie.createElement(pr,null,t.action?.map((i,u)=>{let c=i.resource&&l(i.resource),d=c?.input?.[0]?.valueReference,x=c?.output?.[0]?.valueReference;return Ie.createElement(Ie.Fragment,{key:`action-${u}`},Ie.createElement(pr.Col,{span:1,p:"md"},c?.status==="completed"?Ie.createElement(Lr,null):Ie.createElement(Zr,{color:"gray"})),Ie.createElement(pr.Col,{span:9,p:"xs"},Ie.createElement(zg,{weight:500},i.title),i.description&&Ie.createElement("div",null,i.description),Ie.createElement("div",null,"Last edited by\xA0",Ie.createElement(Ee,{value:c?.meta?.author}),"\xA0on\xA0",Wg(c?.meta?.lastUpdated)),Ie.createElement("div",null,"Status: ",Ie.createElement(Qt,{status:c?.status||"unknown"}))),Ie.createElement(pr.Col,{span:2,p:"md"},d&&!x&&Ie.createElement(Ls,{onClick:()=>e.onStart(c,d)},"Start"),d&&x&&Ie.createElement(Ls,{onClick:()=>e.onEdit(c,d,x)},"Edit")))}));function s(i){let u=[];if(i.action)for(let c of i.action)c.resource?.reference&&u.push({request:{method:"GET",url:c.resource.reference}});return{resourceType:"Bundle",type:"batch",entry:u}}function l(i){for(let u of n?.entry)if(u.resource&&i.reference===Xg(u.resource))return u.resource}}import{createStyles as eh}from"@mantine/core";import he,{useEffect as oh,useState as th}from"react";import{stringify as _g}from"@medplum/core";function xr(e,o){let t=$g(e,o);return Kg(t,e,o)}function $g(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,c=u+1,d=u-1,x=s[c],y=s[d],g,T=0;i===-l||i!==l&&y.i<x.i?(T=x.i,g=x):(T=y.i+1,g=y),s[d]=void 0;let B=T-i,k={i:T,j:B,prev:jg(g),snake:!1};for(;T<t&&B<r&&e[T]===o[B];)T++,B++;if(T>k.i&&(k={i:T,j:B,prev:k,snake:!0}),s[u]=k,T>=t&&B>=r)return s[u]}s[f+l-1]=void 0}}function Kg(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)},c;i.lines.length===0&&u.lines.length>0?c="insert":i.lines.length>0&&u.lines.length===0?c="delete":c="change",r.push({original:i,revised:u,type:c}),a.snake&&(a=a.prev)}return r}function jg(e){return e&&!e.snake&&e.prev?e.prev:e}function Ns(e){let o=e.entry.filter(r=>!!r.resource).map(r=>({meta:r.resource?.meta,lines:_g(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 Zg(t,o),Yg(t),t}function Zg(e,o){for(let t=1;t<o.length;t++){let r=xr(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 Yg(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}}function Hs(e,o){return`/${e.resourceType}/${e.id}/_history/${o}`}function Vs(e){let o=Math.floor((Date.now()-Date.parse(e))/1e3),t=Math.floor(o/31536e3);if(t>0)return zo(t,"year");let r=Math.floor(o/2592e3);if(r>0)return zo(r,"month");let a=Math.floor(o/86400);if(a>0)return zo(a,"day");let n=Math.floor(o/3600);if(n>0)return zo(n,"hour");let f=Math.floor(o/60);return f>0?zo(f,"minute"):zo(o,"second")}function zo(e,o){return`${e} ${e===1?o:o+"s"} ago`}var rh=eh(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 I0(e){let{classes:o}=rh(),t=P(),[r,a]=th(e.history);if(oh(()=>{!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 he.createElement("div",null,"Loading...");let n=r.entry?.[0]?.resource;if(!n)return null;let f=Ns(r);return he.createElement("div",{className:o.container},he.createElement("table",{className:o.root},he.createElement("tbody",null,f.map((s,l)=>he.createElement("tr",{key:"row-"+l,className:s.span>0?o.startRow:o.normalRow},s.span>0&&he.createElement(he.Fragment,null,he.createElement("td",{className:o.author,rowSpan:s.span},he.createElement(_e,{value:s.meta.author,link:!0})),he.createElement("td",{className:o.dateTime,rowSpan:s.span},he.createElement(le,{to:Hs(n,s.meta.versionId)},Vs(s.meta.lastUpdated)))),he.createElement("td",{className:o.lineNumber},l+1),he.createElement("td",{className:o.line},he.createElement("pre",{className:o.pre},s.value)))))))}import{createStyles as ah}from"@mantine/core";import{stringify as qs}from"@medplum/core";import to from"react";var nh=ah(e=>({removed:{color:e.colors.red[7],textDecoration:"line-through"},added:{color:e.colors.green[7]}}));function b0(e){let o=e.original,t=e.revised;e.ignoreMeta&&(o={...o,meta:void 0},t={...t,meta:void 0});let r=qs(o,!0).match(/[^\r\n]+/g),a=qs(t,!0).match(/[^\r\n]+/g),n=xr(r,a);return to.createElement("pre",{style:{color:"gray"}},n.map((f,s)=>to.createElement(fh,{key:"delta"+s,delta:f})))}function fh(e){let{classes:o}=nh();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{Button as Gs,Group as lh,Stack as sh,TextInput as Us}from"@mantine/core";import{deepClone as ih}from"@medplum/core";import Be,{useEffect as uh,useState as Qs}from"react";function F0(e){let o=P(),t=z(e.defaultValue),[r,a]=Qs(!1),[n,f]=Qs();return uh(()=>{t&&(f(ih(t)),o.requestSchema(t.resourceType).then(()=>a(!0)).catch(console.log))},[o,t]),!r||!n?Be.createElement("div",null,"Loading..."):Be.createElement("form",{noValidate:!0,autoComplete:"off",onSubmit:s=>{s.preventDefault(),e.onSubmit&&e.onSubmit(n)}},Be.createElement(sh,{mb:"xl"},Be.createElement(ye,{title:"Resource Type",htmlFor:"resourceType",outcome:e.outcome},Be.createElement(Us,{name:"resourceType",defaultValue:n.resourceType,disabled:!0})),Be.createElement(ye,{title:"ID",htmlFor:"id",outcome:e.outcome},Be.createElement(Us,{name:"id",defaultValue:n.id,disabled:!0}))),Be.createElement(nt,{typeName:n.resourceType,defaultValue:n,outcome:e.outcome,onChange:f}),Be.createElement(lh,{position:"right",mt:"xl"},Be.createElement(Gs,{type:"submit"},"OK"),e.onDelete&&Be.createElement(Gs,{variant:"outline",color:"red",type:"button",onClick:()=>{e.onDelete(n)}},"Delete")))}import{Table as dh}from"@mantine/core";import{formatDateTime as ch,normalizeErrorString as mh}from"@medplum/core";import de,{useEffect as ph,useState as xh}from"react";function V0(e){let o=P(),[t,r]=xh(e.history);return ph(()=>{!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?de.createElement(dh,{withBorder:!0,withColumnBorders:!0},de.createElement("thead",null,de.createElement("tr",null,de.createElement("th",null,"Author"),de.createElement("th",null,"Date"),de.createElement("th",null,"Version"))),de.createElement("tbody",null,t.entry?.map((a,n)=>de.createElement(Ih,{key:"entry-"+n,entry:a})))):de.createElement("div",null,"Loading...")}function Ih(e){let{response:o,resource:t}=e.entry;return t?de.createElement("tr",null,de.createElement("td",null,de.createElement(_e,{value:t.meta?.author,link:!0})),de.createElement("td",null,ch(t.meta?.lastUpdated)),de.createElement("td",null,de.createElement(le,{to:gh(t)},t.meta?.versionId))):de.createElement("tr",null,de.createElement("td",{colSpan:3},mh(o?.outcome)))}function gh(e){return`/${e.resourceType}/${e.id}/_history/${e.meta?.versionId}`}import{Button as hh,createStyles as Ch,Stack as yh,Text as vh}from"@mantine/core";import{getReferenceString as Sh,isReference as bh}from"@medplum/core";import Y,{useState as Ir}from"react";var Ph=Ch(e=>({container:{display:"flex",minHeight:400},info:{minWidth:300,padding:20,borderRight:`1px solid ${e.colors.gray[3]}`},selection:{minWidth:300,padding:20}}));function j0(e){let{classes:o}=Ph(),t=z(e.schedule),r=z(e.questionnaire),[a,n]=Ir(Ut()),[f,s]=Ir(),[l,i]=Ir(),[u,c]=Ir(),[d]=vn("Slot",new URLSearchParams([["_count",(30*24).toString()],["schedule",bh(e.schedule)?e.schedule.reference:Sh(e.schedule)],["start","gt"+Dh(a)],["start","lt"+Th(a)]]));if(!t||!d||!r)return null;let x=t.actor?.[0];return Y.createElement("div",{className:o.container,"data-testid":"scheduler"},Y.createElement("div",{className:o.info},x&&Y.createElement(ge,{value:x,size:"xl"}),x&&Y.createElement(vh,{size:"xl",weight:500},Y.createElement(Ee,{value:x})),Y.createElement("p",null,"1 hour"),f&&Y.createElement("p",null,f.toLocaleDateString()),l&&Y.createElement("p",null,zs(new Date(l.start)))),Y.createElement("div",{className:o.selection},!f&&Y.createElement("div",null,Y.createElement("h3",null,"Select date"),Y.createElement(Kf,{slots:d,onChangeMonth:n,onClick:s})),f&&!l&&Y.createElement("div",null,Y.createElement("h3",null,"Select time"),Y.createElement(yh,null,d.map(y=>{let g=new Date(y.start);return g.getTime()>f.getTime()&&g.getTime()<f.getTime()+24*3600*1e3&&Y.createElement("div",{key:y.id},Y.createElement(hh,{variant:"outline",style:{width:150},onClick:()=>i(y)},zs(g)))}))),f&&l&&!u&&Y.createElement(ws,{questionnaire:r,submitButtonText:"Next",onSubmit:c}),f&&l&&u&&Y.createElement("div",null,Y.createElement("h3",null,"You're all set!"),Y.createElement("p",null,"Check your email for a calendar invite."))))}function Dh(e){return Ws(e.getTime())}function Th(e){return Ws(e.getTime()+31*24*60*60*1e3)}function Ws(e){let o=new Date(Math.max(Date.now(),e));return o.setHours(0,0,0,0),o.toISOString()}function zs(e){return e.toLocaleTimeString([],{hour:"numeric",minute:"2-digit"})}import{createReference as gr}from"@medplum/core";import kh from"react";function r1(e){return kh.createElement(Ye,{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:[gr(o)],subject:o.subject,sender:gr(t),sent:new Date().toISOString(),payload:[{contentString:r}]}),createMedia:(o,t,r)=>({resourceType:"Media",status:"completed",basedOn:[gr(o)],subject:o.subject,operator:gr(t),issued:new Date().toISOString(),content:r})})}import{normalizeOperationOutcome as $h}from"@medplum/core";import br,{useEffect as Kh,useState as Ys}from"react";import{Anchor as Xs,Button as Bh,Center as Ah,Group as Mh,Stack as Fh,Text as wh,TextInput as Oh,Title as Eh}from"@mantine/core";import{normalizeOperationOutcome as Lh}from"@medplum/core";import Ae,{useState as Rh}from"react";function hr(e){let o=P(),[t,r]=Rh();return Ae.createElement($,{style:{maxWidth:400},onSubmit:async a=>{try{e.handleAuthResponse(await o.startNewProject({login:e.login,projectName:a.projectName}))}catch(n){r(Lh(n))}}},Ae.createElement(Ah,{sx:{flexDirection:"column"}},Ae.createElement(eo,{size:32}),Ae.createElement(Eh,null,"Create project")),Ae.createElement(Fh,{spacing:"xl"},Ae.createElement(Oh,{name:"projectName",label:"Project Name",placeholder:"My Project",required:!0,autoFocus:!0,error:pe(t,"firstName")}),Ae.createElement(wh,{color:"dimmed",size:"xs"},"By clicking submit you agree to the Medplum"," ",Ae.createElement(Xs,{href:"https://www.medplum.com/privacy"},"Privacy\xA0Policy")," and ",Ae.createElement(Xs,{href:"https://www.medplum.com/terms"},"Terms\xA0of\xA0Service"),".")),Ae.createElement(Mh,{position:"right",mt:"xl",noWrap:!0},Ae.createElement(Bh,{type:"submit"},"Create project")))}import{Anchor as Sr,Button as qh,Center as Gh,Checkbox as Uh,Divider as Qh,Group as Ks,PasswordInput as zh,Stack as Wh,Text as js,TextInput as dn}from"@mantine/core";import{normalizeOperationOutcome as _s}from"@medplum/core";import _,{useEffect as Xh,useState as Jh}from"react";import Nh,{useEffect as Hh,useRef as Vh,useState as un}from"react";function Cr(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 yr(e){let o=P(),{googleClientId:t,handleGoogleCredential:r}=e,a=Vh(null),[n,f]=un(typeof google<"u"),[s,l]=un(!1),[i,u]=un(!1);return Hh(()=>{if(typeof google>"u"){Cr("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?Nh.createElement("div",{ref:a}):null}function vr(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 Js(e){typeof grecaptcha>"u"&&Cr("https://www.google.com/recaptcha/api.js?render="+e)}function $s(e){return new Promise((o,t)=>{grecaptcha.ready(async()=>{try{o(await grecaptcha.execute(e,{action:"submit"}))}catch(r){t(r)}})})}function Zs(e){let o=vr(e.googleClientId),t=e.recaptchaSiteKey,r=P(),[a,n]=Jh(),f=Ot(a,void 0);return Xh(()=>{t&&Js(t)},[t]),_.createElement($,{style:{maxWidth:400},onSubmit:async s=>{try{let l="";t&&(l=await $s(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(_s(l))}}},_.createElement(Gh,{sx:{flexDirection:"column"}},e.children),_.createElement(Uo,{issues:f}),o&&_.createElement(_.Fragment,null,_.createElement(Ks,{position:"center",p:"xl",style:{height:70}},_.createElement(yr,{googleClientId:o,handleGoogleCredential:async s=>{try{e.handleAuthResponse(await r.startGoogleLogin({googleClientId:s.clientId,googleCredential:s.credential,createUser:!0}))}catch(l){n(_s(l))}}})),_.createElement(Qh,{label:"or",labelPosition:"center",my:"lg"})),_.createElement(Wh,{spacing:"xl"},_.createElement(dn,{name:"firstName",type:"text",label:"First name",placeholder:"First name",required:!0,autoFocus:!0,error:pe(a,"firstName")}),_.createElement(dn,{name:"lastName",type:"text",label:"Last name",placeholder:"Last name",required:!0,error:pe(a,"lastName")}),_.createElement(dn,{name:"email",type:"email",label:"Email",placeholder:"name@domain.com",required:!0,error:pe(a,"email")}),_.createElement(zh,{name:"password",label:"Password",autoComplete:"off",required:!0,error:pe(a,"password")}),_.createElement(js,{color:"dimmed",size:"xs"},"By clicking submit you agree to the Medplum"," ",_.createElement(Sr,{href:"https://www.medplum.com/privacy"},"Privacy\xA0Policy")," and ",_.createElement(Sr,{href:"https://www.medplum.com/terms"},"Terms\xA0of\xA0Service"),"."),_.createElement(js,{color:"dimmed",size:"xs"},"This site is protected by reCAPTCHA and the Google"," ",_.createElement(Sr,{href:"https://policies.google.com/privacy"},"Privacy\xA0Policy")," and ",_.createElement(Sr,{href:"https://policies.google.com/terms"},"Terms\xA0of\xA0Service")," apply.")),_.createElement(Ks,{position:"apart",mt:"xl",noWrap:!0},_.createElement(Uh,{name:"remember",label:"Remember me",size:"xs"}),_.createElement(qh,{type:"submit"},"Create account")))}function U1(e){let{type:o,projectId:t,clientId:r,googleClientId:a,recaptchaSiteKey:n,onSuccess:f}=e,s=P(),[l,i]=Ys(),[u,c]=Ys();Kh(()=>{o==="patient"&&l&&s.startNewPatient({login:l,projectId:t}).then(x=>s.processCode(x.code)).then(()=>f()).catch(x=>c($h(x)))},[s,o,t,l,f]);function d(x){x.code?s.processCode(x.code).then(()=>f()).catch(console.log):x.login&&i(x.login)}return br.createElement(Jt,{width:450},u&&br.createElement("pre",null,JSON.stringify(u,null,2)),!l&&br.createElement(Zs,{projectId:t,clientId:r,googleClientId:a,recaptchaSiteKey:n,handleAuthResponse:d},e.children),l&&o==="project"&&br.createElement(hr,{login:l,handleAuthResponse:d}))}import{showNotification as di}from"@mantine/notifications";import{normalizeErrorString as ci}from"@medplum/core";import Io,{useCallback as mn,useEffect as DC,useState as pn}from"react";import{Anchor as ei,Button as oi,Center as ti,Checkbox as jh,Divider as _h,Group as cn,PasswordInput as Zh,Stack as Yh,TextInput as eC}from"@mantine/core";import{normalizeOperationOutcome as oC}from"@medplum/core";import j,{useCallback as Pr,useState as ri}from"react";function ai(e){let[o,t]=ri();return o?j.createElement(rC,{email:o,...e}):j.createElement(tC,{setEmail:t,...e})}function tC(e){let{setEmail:o,onRegister:t,handleAuthResponse:r,children:a,disableEmailAuth:n,...f}=e,s=P(),l=!e.disableGoogleAuth&&vr(e.googleClientId),i=Pr(async d=>{if(!d.authorizeUrl)return!1;let x=JSON.stringify({...await s.ensureCodeChallenge(f),domain:d.domain}),y=new URL(d.authorizeUrl);return y.searchParams.set("state",x),window.location.assign(y.toString()),!0},[s,f]),u=Pr(async d=>{let x=await s.post("auth/method",{email:d.email});await i(x)||o(d.email)},[s,i,o]),c=Pr(async d=>{let x=await s.startGoogleLogin({...f,googleCredential:d.credential});await i(x)||r(x)},[s,f,i,r]);return j.createElement($,{style:{maxWidth:400},onSubmit:u},j.createElement(ti,{sx:{flexDirection:"column"}},a),l&&j.createElement(j.Fragment,null,j.createElement(cn,{position:"center",p:"xl",style:{height:70}},j.createElement(yr,{googleClientId:l,handleGoogleCredential:c})),!n&&j.createElement(_h,{label:"or",labelPosition:"center",my:"lg"})),!n&&j.createElement(eC,{name:"email",type:"email",label:"Email",placeholder:"name@domain.com",required:!0,autoFocus:!0}),j.createElement(cn,{position:"apart",mt:"xl",spacing:0,noWrap:!0},j.createElement("div",null,t&&j.createElement(ei,{component:"button",type:"button",color:"dimmed",onClick:t,size:"xs"},"Register")),!n&&j.createElement(oi,{type:"submit"},"Next")))}function rC(e){let{onForgotPassword:o,handleAuthResponse:t,children:r,...a}=e,n=P(),[f,s]=ri(),l=Ot(f,void 0),i=Pr(u=>{n.startLogin({...a,password:u.password,remember:u.remember==="on"}).then(t).catch(c=>s(oC(c)))},[n,a,t]);return j.createElement($,{style:{maxWidth:400},onSubmit:i},j.createElement(ti,{sx:{flexDirection:"column"}},r),j.createElement(Uo,{issues:l}),j.createElement(Yh,{spacing:"xl"},j.createElement(Zh,{name:"password",label:"Password",autoComplete:"off",required:!0,autoFocus:!0,error:pe(f,"password")})),j.createElement(cn,{position:"apart",mt:"xl",spacing:0,noWrap:!0},o&&j.createElement(ei,{component:"button",type:"button",color:"dimmed",onClick:o,size:"xs"},"Forgot password"),j.createElement(jh,{id:"remember",name:"remember",label:"Remember me",size:"xs",sx:{lineHeight:1}}),j.createElement(oi,{type:"submit"},"Sign in")))}import{Avatar as aC,Center as nC,Group as fC,Stack as lC,Text as ni,Title as sC,UnstyledButton as iC}from"@mantine/core";import{normalizeOperationOutcome as uC}from"@medplum/core";import Me,{useState as dC}from"react";function fi(e){let o=P(),[t,r]=dC();return Me.createElement(lC,null,Me.createElement(nC,{sx:{flexDirection:"column"}},Me.createElement(eo,{size:32}),Me.createElement(sC,{order:3},"Choose profile")),Me.createElement(Uo,{outcome:t}),e.memberships.map(a=>Me.createElement(iC,{key:a.id,onClick:()=>{o.post("auth/profile",{login:e.login,profile:a.id}).then(e.handleAuthResponse).catch(n=>r(uC(n)))}},Me.createElement(fC,null,Me.createElement(aC,{radius:"xl"}),Me.createElement("div",{style:{flex:1}},Me.createElement(ni,{size:"sm",weight:500},a.profile?.display),Me.createElement(ni,{color:"dimmed",size:"xs"},a.project?.display))))))}import{Button as cC,Center as mC,Checkbox as pC,Group as xC,Stack as li,Title as IC}from"@mantine/core";import Ue from"react";function si(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(li,null,Ue.createElement(mC,{sx:{flexDirection:"column"}},Ue.createElement(eo,{size:32}),Ue.createElement(IC,null,"Choose scope")),Ue.createElement(li,null,(e.scope??"openid").split(" ").map(t=>Ue.createElement(pC,{key:t,id:t,name:t,label:t,defaultChecked:!0}))),Ue.createElement(xC,{position:"right",mt:"xl"},Ue.createElement(cC,{type:"submit"},"Set scope"))))}import{Alert as gC,Button as hC,Center as CC,Group as yC,Stack as ii,TextInput as vC,Title as SC}from"@mantine/core";import{normalizeErrorString as bC}from"@medplum/core";import Fe,{useState as PC}from"react";function ui(e){let o=P(),[t,r]=PC();return Fe.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(bC(n)))}},Fe.createElement(ii,null,Fe.createElement(CC,{sx:{flexDirection:"column"}},Fe.createElement(eo,{size:32}),Fe.createElement(SC,null,"Enter MFA code")),t&&Fe.createElement(gC,{icon:Fe.createElement(no,{size:16}),title:"Error",color:"red"},t),Fe.createElement(ii,null,Fe.createElement(vC,{name:"token",label:"MFA code",required:!0})),Fe.createElement(yC,{position:"right",mt:"xl"},Fe.createElement(hC,{type:"submit"},"Submit code"))))}function VE(e){let{login:o,chooseScopes:t,onSuccess:r,onForgotPassword:a,onRegister:n,onCode:f,...s}=e,l=P(),[i,u]=pn(),[c,d]=pn(!1),[x,y]=pn(),g=mn(k=>{f?f(k):l.processCode(k).then(()=>{r&&r()}).catch(A=>di({color:"red",message:ci(A)}))},[l,f,r]),T=mn(k=>{d(!!k.mfaRequired),k.login&&u(k.login),k.memberships&&y(k.memberships),k.code&&(t?y(void 0):g(k.code))},[t,g]),B=mn(k=>{g(k.code)},[g]);return DC(()=>{o&&!i&&l.get("auth/login/"+o).then(T).catch(k=>di({color:"red",message:ci(k)}))},[l,o,i,T]),Io.createElement(Jt,{width:450},(()=>i?c?Io.createElement(ui,{login:i,handleAuthResponse:T}):x?Io.createElement(fi,{login:i,memberships:x,handleAuthResponse:T}):e.projectId==="new"?Io.createElement(hr,{login:i,handleAuthResponse:T}):e.chooseScopes?Io.createElement(si,{login:i,scope:e.scope,handleAuthResponse:B}):Io.createElement("div",null,"Success"):Io.createElement(ai,{onForgotPassword:a,onRegister:n,handleAuthResponse:T,disableGoogleAuth:e.disableGoogleAuth,disableEmailAuth:e.disableEmailAuth,...s},e.children))())}export{bn as AddressDisplay,kn as AddressInput,Bn as AnnotationInput,pP as AppShell,Do as AsyncAutocomplete,ef as AttachmentArrayDisplay,tf as AttachmentArrayInput,Bo as AttachmentButton,Oe as AttachmentDisplay,Tt as AttachmentInput,ot as BackboneElementDisplay,nt as BackboneElementInput,Kf as CalendarInput,wt as CheckboxFormSection,Dt as CodeInput,Mo as CodeableConceptDisplay,yf as CodeableConceptInput,sf as CodingDisplay,Et as CodingInput,df as ContactDetailDisplay,Sf as ContactDetailInput,Bt as ContactPointDisplay,Rt as ContactPointInput,je as Container,ke as DateTimeInput,YA as DefaultResourceTimeline,af as DescriptionList,nf as DescriptionListEntry,Pa as DiagnosticReportDisplay,Jt as Document,mm as ElementDefinitionInputSelector,Wf as ElementDefinitionTypeInput,dM as EncounterTimeline,vo as ErrorBoundary,oI as FhirPathTable,$ as Form,ye as FormSection,$n as Header,St as HumanNameDisplay,kf as HumanNameInput,cf as IdentifierDisplay,Af as IdentifierInput,ra as Loading,eo as Logo,sw as MeasureReportDisplay,le as MedplumLink,BC as MedplumProvider,KF as MemoizedFhirPathTable,qF as MemoizedSearchControl,pf as MoneyDisplay,Mf as MoneyInput,Yn as Navbar,jm as ObservationTable,Uo as OperationOutcomeAlert,Lo as Panel,yw as PatientTimeline,Rw as PlanDefinitionBuilder,Ke as QuantityDisplay,Se as QuantityInput,mO as QuestionnaireBuilder,ws as QuestionnaireForm,fr as QuestionnaireItemType,At as RangeDisplay,at as RangeInput,lo as ReferenceDisplay,Oo as ReferenceInput,JO as ReferenceRangeEditor,Ng as ReferenceRangeGroupEditor,U1 as RegisterForm,t0 as RequestGroupDisplay,hf as ResourceArrayDisplay,Vf as ResourceArrayInput,ge as ResourceAvatar,_e as ResourceBadge,I0 as ResourceBlame,b0 as ResourceDiff,F0 as ResourceForm,V0 as ResourceHistoryTable,Vt as ResourceInput,Ee as ResourceName,me as ResourcePropertyDisplay,qe as ResourcePropertyInput,Da as ResourceTable,Ye as ResourceTimeline,j0 as Scheduler,Ha as SearchChangeEvent,co as SearchClickEvent,Wx as SearchControl,Rl as SearchFieldEditor,Ul as SearchFilterEditor,Va as SearchLoadEvent,r1 as ServiceRequestTimeline,VE as SignInForm,Qt as StatusBadge,sl as Timeline,Ze as TimelineItem,zf as TimingInput,Ma as addDateFilterBetween,BM as addField,Ho as addFilter,Tl as addLastMonthFilter,Fa as addMissingFilter,Bl as addNextMonthFilter,kl as addThisMonthFilter,Pl as addTodayFilter,Dl as addTomorrowFilter,Al as addYearToDateFilter,bl as addYesterdayFilter,Pe as buildFieldNameString,xs as buildInitialResponse,Ka as buildInitialResponseItem,kM as clearFilters,jt as clearFiltersOnField,Pf as convertIsoToLocal,Df as convertLocalToIso,Cr as createScriptTag,Sl as deleteFilter,gs as formatReferenceString,pe as getErrorsForInput,Wl as getFieldDefinitions,Ot as getIssuesForExpression,ms as getNewMultiSelectValues,hs as getNumberOfPages,st as getOpString,lr as getQuestionnaireItemReferenceTargetTypes,$s as getRecaptcha,Ol as getSearchOperators,Fl as getSortField,Js as initRecaptcha,ds as isChoiceQuestion,cs as isQuestionEnabled,wl as isSortDescending,Kn as parseForm,hn as reactContext,El as renderValue,lt as setFilters,jp as setOffset,Ml as setPage,sr as setQuestionnaireItemReferenceTargetTypes,wa as setSort,dl as sortByDateAndPriority,AM as toggleSort,P as useMedplum,Xo as useMedplumContext,Qe as useMedplumNavigate,gt as useMedplumProfile,z as useResource,OC as useSearch,yn as useSearchOne,vn as useSearchResources};
68
68
  //# sourceMappingURL=index.mjs.map