@medplum/react 2.1.5 → 2.1.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,4 +1,4 @@
1
- import{formatAddress as Ws}from"@medplum/core";import nn from"react";function fn(e){let o=e.value;return o?nn.createElement(nn.Fragment,null,Ws(o)):null}import{Group as Xs,NativeSelect as ln,TextInput as zo}from"@mantine/core";import Ue,{useRef as Js,useState as $s}from"react";function sn(e,o){return e.line&&e.line.length>o?e.line[o]:""}function un(e,o,t){let r=e.line||[];for(;r.length<=o;)r.push("");return r[o]=t,{...e,line:r}}function dn(e){let[o,t]=$s(e.defaultValue||{}),r=Js();r.current=o;function a(c){t(c),e.onChange&&e.onChange(c)}function n(c){a({...r.current,use:c})}function f(c){a({...r.current,type:c})}function s(c){a(un(r.current||{},0,c))}function l(c){a(un(r.current||{},1,c))}function i(c){a({...r.current,city:c})}function u(c){a({...r.current,state:c})}function d(c){a({...r.current,postalCode:c})}return Ue.createElement(Xs,{spacing:"xs",grow:!0,noWrap:!0},Ue.createElement(ln,{"data-testid":"address-use",defaultValue:o.use,onChange:c=>n(c.currentTarget.value),data:["","home","work","temp","old","billing"]}),Ue.createElement(ln,{"data-testid":"address-type",defaultValue:o.type,onChange:c=>f(c.currentTarget.value),data:["","postal","physical","both"]}),Ue.createElement(zo,{placeholder:"Line 1",defaultValue:sn(o,0),onChange:c=>s(c.currentTarget.value)}),Ue.createElement(zo,{placeholder:"Line 2",defaultValue:sn(o,1),onChange:c=>l(c.currentTarget.value)}),Ue.createElement(zo,{placeholder:"City",defaultValue:o.city,onChange:c=>i(c.currentTarget.value)}),Ue.createElement(zo,{placeholder:"State",defaultValue:o.state,onChange:c=>u(c.currentTarget.value)}),Ue.createElement(zo,{placeholder:"Postal Code",defaultValue:o.postalCode,onChange:c=>d(c.currentTarget.value)}))}import{TextInput as ti}from"@mantine/core";import{createReference as ri}from"@medplum/core";import ai,{useRef as ni,useState as fi}from"react";import{showNotification as Ks}from"@mantine/notifications";import js,{createContext as _s,useContext as Zs,useEffect as cn,useMemo as Ys,useState as ei}from"react";var mn=_s(void 0);function jh(e){let o=e.medplum,t=e.navigate??oi,[r,a]=ei({profile:o.getProfile(),loading:!1});cn(()=>{function f(){a({...r,profile:o.getProfile()})}return o.addEventListener("change",f),()=>o.removeEventListener("change",f)},[o,r]),cn(()=>{function f(){Ks({color:"red",message:"No connection to server",autoClose:!1})}return o.addEventListener("offline",f),()=>o.removeEventListener("offline",f)},[o]);let n=Ys(()=>({...r,medplum:o,navigate:t}),[r,o,t]);return js.createElement(mn.Provider,{value:n},e.children)}function Wo(){return Zs(mn)}function S(){return Wo().medplum}function Qe(){return Wo().navigate}function It(){return Wo().profile}function oi(e){window.location.assign(e)}function pn(e){let o=It(),[t,r]=fi(e.defaultValue||{}),a=ni();a.current=t;function n(f){let s=f?{text:f,authorReference:o&&ri(o),time:new Date().toISOString()}:{};r(s),e.onChange&&e.onChange(s)}return ai.createElement(ti,{name:e.name,placeholder:"Annotation text",defaultValue:t.text,onChange:f=>n(f.currentTarget.value)})}import{AppShell as qu,useMantineTheme as Gu}from"@mantine/core";import ao,{Suspense as Uu,useState as Qu}from"react";import{Alert as mi}from"@mantine/core";import{normalizeErrorString as pi}from"@medplum/core";import{forwardRef as li,createElement as In}from"react";import to from"prop-types";var xn={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};var si=Object.defineProperty,ii=Object.defineProperties,ui=Object.getOwnPropertyDescriptors,gt=Object.getOwnPropertySymbols,Cn=Object.prototype.hasOwnProperty,yn=Object.prototype.propertyIsEnumerable,gn=(e,o,t)=>o in e?si(e,o,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[o]=t,hn=(e,o)=>{for(var t in o||(o={}))Cn.call(o,t)&&gn(e,t,o[t]);if(gt)for(var t of gt(o))yn.call(o,t)&&gn(e,t,o[t]);return e},di=(e,o)=>ii(e,ui(o)),ci=(e,o)=>{var t={};for(var r in e)Cn.call(e,r)&&o.indexOf(r)<0&&(t[r]=e[r]);if(e!=null&&gt)for(var r of gt(e))o.indexOf(r)<0&&yn.call(e,r)&&(t[r]=e[r]);return t},p=(e,o,t)=>{let r=li((a,n)=>{var f=a,{color:s="currentColor",size:l=24,stroke:i=2,children:u}=f,d=ci(f,["color","size","stroke","children"]);return In("svg",hn(di(hn({ref:n},xn),{width:l,height:l,stroke:s,strokeWidth:i,className:`tabler-icon tabler-icon-${e}`}),d),[...t.map(([c,g])=>In(c,g)),...u||[]])});return r.propTypes={color:to.string,size:to.oneOfType([to.string,to.number]),stroke:to.oneOfType([to.string,to.number])},r.displayName=`${o}`,r};var gr=p("adjustments-horizontal","IconAdjustmentsHorizontal",[["path",{d:"M14 6m-2 0a2 2 0 1 0 4 0a2 2 0 1 0 -4 0",key:"svg-0"}],["path",{d:"M4 6l8 0",key:"svg-1"}],["path",{d:"M16 6l4 0",key:"svg-2"}],["path",{d:"M8 12m-2 0a2 2 0 1 0 4 0a2 2 0 1 0 -4 0",key:"svg-3"}],["path",{d:"M4 12l2 0",key:"svg-4"}],["path",{d:"M10 12l10 0",key:"svg-5"}],["path",{d:"M17 18m-2 0a2 2 0 1 0 4 0a2 2 0 1 0 -4 0",key:"svg-6"}],["path",{d:"M4 18l11 0",key:"svg-7"}],["path",{d:"M19 18l1 0",key:"svg-8"}]]);var ro=p("alert-circle","IconAlertCircle",[["path",{d:"M3 12a9 9 0 1 0 18 0a9 9 0 0 0 -18 0",key:"svg-0"}],["path",{d:"M12 8v4",key:"svg-1"}],["path",{d:"M12 16h.01",key:"svg-2"}]]);var hr=p("arrow-down","IconArrowDown",[["path",{d:"M12 5l0 14",key:"svg-0"}],["path",{d:"M18 13l-6 6",key:"svg-1"}],["path",{d:"M6 13l6 6",key:"svg-2"}]]);var Cr=p("arrow-up","IconArrowUp",[["path",{d:"M12 5l0 14",key:"svg-0"}],["path",{d:"M18 11l-6 -6",key:"svg-1"}],["path",{d:"M6 11l6 -6",key:"svg-2"}]]);var yr=p("bleach-off","IconBleachOff",[["path",{d:"M5 19h14m1.986 -1.977a2 2 0 0 0 -.146 -.773l-7.1 -12.25a2 2 0 0 0 -3.5 0l-.815 1.405m-1.488 2.568l-4.797 8.277a2 2 0 0 0 1.75 2.75",key:"svg-0"}],["path",{d:"M3 3l18 18",key:"svg-1"}]]);var vr=p("bleach","IconBleach",[["path",{d:"M5 19h14a2 2 0 0 0 1.84 -2.75l-7.1 -12.25a2 2 0 0 0 -3.5 0l-7.1 12.25a2 2 0 0 0 1.75 2.75",key:"svg-0"}]]);var Sr=p("box-multiple","IconBoxMultiple",[["path",{d:"M7 3m0 2a2 2 0 0 1 2 -2h10a2 2 0 0 1 2 2v10a2 2 0 0 1 -2 2h-10a2 2 0 0 1 -2 -2z",key:"svg-0"}],["path",{d:"M17 17v2a2 2 0 0 1 -2 2h-10a2 2 0 0 1 -2 -2v-10a2 2 0 0 1 2 -2h2",key:"svg-1"}]]);var br=p("brackets-contain","IconBracketsContain",[["path",{d:"M7 4h-4v16h4",key:"svg-0"}],["path",{d:"M17 4h4v16h-4",key:"svg-1"}],["path",{d:"M8 16h.01",key:"svg-2"}],["path",{d:"M12 16h.01",key:"svg-3"}],["path",{d:"M16 16h.01",key:"svg-4"}]]);var Pr=p("bucket-off","IconBucketOff",[["path",{d:"M5.029 5.036c-.655 .58 -1.029 1.25 -1.029 1.964c0 2.033 3.033 3.712 6.96 3.967m3.788 -.21c3.064 -.559 5.252 -2.029 5.252 -3.757c0 -2.21 -3.582 -4 -8 -4c-1.605 0 -3.1 .236 -4.352 .643",key:"svg-0"}],["path",{d:"M4 7c0 .664 .088 1.324 .263 1.965l2.737 10.035c.5 1.5 2.239 2 5 2s4.5 -.5 5 -2c.1 -.3 .252 -.812 .457 -1.535m.862 -3.146c.262 -.975 .735 -2.76 1.418 -5.354a7.45 7.45 0 0 0 .263 -1.965",key:"svg-1"}],["path",{d:"M3 3l18 18",key:"svg-2"}]]);var Dr=p("bucket","IconBucket",[["path",{d:"M12 7m-8 0a8 4 0 1 0 16 0a8 4 0 1 0 -16 0",key:"svg-0"}],["path",{d:"M4 7c0 .664 .088 1.324 .263 1.965l2.737 10.035c.5 1.5 2.239 2 5 2s4.5 -.5 5 -2c.333 -1 1.246 -4.345 2.737 -10.035a7.45 7.45 0 0 0 .263 -1.965",key:"svg-1"}]]);var Re=p("calendar","IconCalendar",[["path",{d:"M4 7a2 2 0 0 1 2 -2h12a2 2 0 0 1 2 2v12a2 2 0 0 1 -2 2h-12a2 2 0 0 1 -2 -2v-12z",key:"svg-0"}],["path",{d:"M16 3v4",key:"svg-1"}],["path",{d:"M8 3v4",key:"svg-2"}],["path",{d:"M4 11h16",key:"svg-3"}],["path",{d:"M11 15h1",key:"svg-4"}],["path",{d:"M12 15v3",key:"svg-5"}]]);var Xo=p("check","IconCheck",[["path",{d:"M5 12l5 5l10 -10",key:"svg-0"}]]);var Tr=p("checkbox","IconCheckbox",[["path",{d:"M9 11l3 3l8 -8",key:"svg-0"}],["path",{d:"M20 12v6a2 2 0 0 1 -2 2h-12a2 2 0 0 1 -2 -2v-12a2 2 0 0 1 2 -2h9",key:"svg-1"}]]);var kr=p("chevron-down","IconChevronDown",[["path",{d:"M6 9l6 6l6 -6",key:"svg-0"}]]);var ze=p("circle-minus","IconCircleMinus",[["path",{d:"M12 12m-9 0a9 9 0 1 0 18 0a9 9 0 1 0 -18 0",key:"svg-0"}],["path",{d:"M9 12l6 0",key:"svg-1"}]]);var po=p("circle-plus","IconCirclePlus",[["path",{d:"M3 12a9 9 0 1 0 18 0a9 9 0 0 0 -18 0",key:"svg-0"}],["path",{d:"M9 12h6",key:"svg-1"}],["path",{d:"M12 9v6",key:"svg-2"}]]);var Jo=p("cloud-upload","IconCloudUpload",[["path",{d:"M7 18a4.6 4.4 0 0 1 0 -9a5 4.5 0 0 1 11 2h1a3.5 3.5 0 0 1 0 7h-1",key:"svg-0"}],["path",{d:"M9 15l3 -3l3 3",key:"svg-1"}],["path",{d:"M12 12l0 9",key:"svg-2"}]]);var Br=p("columns","IconColumns",[["path",{d:"M4 6l5.5 0",key:"svg-0"}],["path",{d:"M4 10l5.5 0",key:"svg-1"}],["path",{d:"M4 14l5.5 0",key:"svg-2"}],["path",{d:"M4 18l5.5 0",key:"svg-3"}],["path",{d:"M14.5 6l5.5 0",key:"svg-4"}],["path",{d:"M14.5 10l5.5 0",key:"svg-5"}],["path",{d:"M14.5 14l5.5 0",key:"svg-6"}],["path",{d:"M14.5 18l5.5 0",key:"svg-7"}]]);var Ar=p("copy","IconCopy",[["path",{d:"M8 8m0 2a2 2 0 0 1 2 -2h8a2 2 0 0 1 2 2v8a2 2 0 0 1 -2 2h-8a2 2 0 0 1 -2 -2z",key:"svg-0"}],["path",{d:"M16 8v-2a2 2 0 0 0 -2 -2h-8a2 2 0 0 0 -2 2v8a2 2 0 0 0 2 2h2",key:"svg-1"}]]);var Mr=p("currency-dollar","IconCurrencyDollar",[["path",{d:"M16.7 8a3 3 0 0 0 -2.7 -2h-4a3 3 0 0 0 0 6h4a3 3 0 0 1 0 6h-4a3 3 0 0 1 -2.7 -2",key:"svg-0"}],["path",{d:"M12 3v3m0 12v3",key:"svg-1"}]]);var Fr=p("dots","IconDots",[["path",{d:"M5 12m-1 0a1 1 0 1 0 2 0a1 1 0 1 0 -2 0",key:"svg-0"}],["path",{d:"M12 12m-1 0a1 1 0 1 0 2 0a1 1 0 1 0 -2 0",key:"svg-1"}],["path",{d:"M19 12m-1 0a1 1 0 1 0 2 0a1 1 0 1 0 -2 0",key:"svg-2"}]]);var wr=p("edit","IconEdit",[["path",{d:"M7 7h-1a2 2 0 0 0 -2 2v9a2 2 0 0 0 2 2h9a2 2 0 0 0 2 -2v-1",key:"svg-0"}],["path",{d:"M20.385 6.585a2.1 2.1 0 0 0 -2.97 -2.97l-8.415 8.385v3h3l8.385 -8.415z",key:"svg-1"}],["path",{d:"M16 5l3 3",key:"svg-2"}]]);var xo=p("equal-not","IconEqualNot",[["path",{d:"M5 10h14",key:"svg-0"}],["path",{d:"M5 14h14",key:"svg-1"}],["path",{d:"M5 19l14 -14",key:"svg-2"}]]);var Io=p("equal","IconEqual",[["path",{d:"M5 10h14",key:"svg-0"}],["path",{d:"M5 14h14",key:"svg-1"}]]);var Or=p("file-alert","IconFileAlert",[["path",{d:"M14 3v4a1 1 0 0 0 1 1h4",key:"svg-0"}],["path",{d:"M17 21h-10a2 2 0 0 1 -2 -2v-14a2 2 0 0 1 2 -2h7l5 5v11a2 2 0 0 1 -2 2z",key:"svg-1"}],["path",{d:"M12 17l.01 0",key:"svg-2"}],["path",{d:"M12 11l0 3",key:"svg-3"}]]);var Er=p("file-plus","IconFilePlus",[["path",{d:"M14 3v4a1 1 0 0 0 1 1h4",key:"svg-0"}],["path",{d:"M17 21h-10a2 2 0 0 1 -2 -2v-14a2 2 0 0 1 2 -2h7l5 5v11a2 2 0 0 1 -2 2z",key:"svg-1"}],["path",{d:"M12 11l0 6",key:"svg-2"}],["path",{d:"M9 14l6 0",key:"svg-3"}]]);var Lr=p("filter","IconFilter",[["path",{d:"M4 4h16v2.172a2 2 0 0 1 -.586 1.414l-4.414 4.414v7l-6 2v-8.5l-4.48 -4.928a2 2 0 0 1 -.52 -1.345v-2.227z",key:"svg-0"}]]);var Rr=p("list-details","IconListDetails",[["path",{d:"M13 5h8",key:"svg-0"}],["path",{d:"M13 9h5",key:"svg-1"}],["path",{d:"M13 15h8",key:"svg-2"}],["path",{d:"M13 19h5",key:"svg-3"}],["path",{d:"M3 4m0 1a1 1 0 0 1 1 -1h4a1 1 0 0 1 1 1v4a1 1 0 0 1 -1 1h-4a1 1 0 0 1 -1 -1z",key:"svg-4"}],["path",{d:"M3 14m0 1a1 1 0 0 1 1 -1h4a1 1 0 0 1 1 1v4a1 1 0 0 1 -1 1h-4a1 1 0 0 1 -1 -1z",key:"svg-5"}]]);var Nr=p("logout","IconLogout",[["path",{d:"M14 8v-2a2 2 0 0 0 -2 -2h-7a2 2 0 0 0 -2 2v12a2 2 0 0 0 2 2h7a2 2 0 0 0 2 -2v-2",key:"svg-0"}],["path",{d:"M9 12h12l-3 -3",key:"svg-1"}],["path",{d:"M18 15l3 -3",key:"svg-2"}]]);var ht=p("math-greater","IconMathGreater",[["path",{d:"M5 18l14 -6l-14 -6",key:"svg-0"}]]);var Ct=p("math-lower","IconMathLower",[["path",{d:"M19 18l-14 -6l14 -6",key:"svg-0"}]]);var Hr=p("message","IconMessage",[["path",{d:"M8 9h8",key:"svg-0"}],["path",{d:"M8 13h6",key:"svg-1"}],["path",{d:"M18 4a3 3 0 0 1 3 3v8a3 3 0 0 1 -3 3h-5l-5 3v-3h-2a3 3 0 0 1 -3 -3v-8a3 3 0 0 1 3 -3h12z",key:"svg-2"}]]);var Vr=p("pin","IconPin",[["path",{d:"M15 4.5l-4 4l-4 1.5l-1.5 1.5l7 7l1.5 -1.5l1.5 -4l4 -4",key:"svg-0"}],["path",{d:"M9 15l-4.5 4.5",key:"svg-1"}],["path",{d:"M14.5 4l5.5 5.5",key:"svg-2"}]]);var qr=p("pinned-off","IconPinnedOff",[["path",{d:"M3 3l18 18",key:"svg-0"}],["path",{d:"M15 4.5l-3.249 3.249m-2.57 1.433l-2.181 .818l-1.5 1.5l7 7l1.5 -1.5l.82 -2.186m1.43 -2.563l3.25 -3.251",key:"svg-1"}],["path",{d:"M9 15l-4.5 4.5",key:"svg-2"}],["path",{d:"M14.5 4l5.5 5.5",key:"svg-3"}]]);var Gr=p("plus","IconPlus",[["path",{d:"M12 5l0 14",key:"svg-0"}],["path",{d:"M5 12l14 0",key:"svg-1"}]]);var Ur=p("refresh","IconRefresh",[["path",{d:"M20 11a8.1 8.1 0 0 0 -15.5 -2m-.5 -4v4h4",key:"svg-0"}],["path",{d:"M4 13a8.1 8.1 0 0 0 15.5 2m.5 4v-4h-4",key:"svg-1"}]]);var Qr=p("search","IconSearch",[["path",{d:"M10 10m-7 0a7 7 0 1 0 14 0a7 7 0 1 0 -14 0",key:"svg-0"}],["path",{d:"M21 21l-6 -6",key:"svg-1"}]]);var go=p("settings","IconSettings",[["path",{d:"M10.325 4.317c.426 -1.756 2.924 -1.756 3.35 0a1.724 1.724 0 0 0 2.573 1.066c1.543 -.94 3.31 .826 2.37 2.37a1.724 1.724 0 0 0 1.065 2.572c1.756 .426 1.756 2.924 0 3.35a1.724 1.724 0 0 0 -1.066 2.573c.94 1.543 -.826 3.31 -2.37 2.37a1.724 1.724 0 0 0 -2.572 1.065c-.426 1.756 -2.924 1.756 -3.35 0a1.724 1.724 0 0 0 -2.573 -1.066c-1.543 .94 -3.31 -.826 -2.37 -2.37a1.724 1.724 0 0 0 -1.065 -2.572c-1.756 -.426 -1.756 -2.924 0 -3.35a1.724 1.724 0 0 0 1.066 -2.573c-.94 -1.543 .826 -3.31 2.37 -2.37c1 .608 2.296 .07 2.572 -1.065z",key:"svg-0"}],["path",{d:"M9 12a3 3 0 1 0 6 0a3 3 0 0 0 -6 0",key:"svg-1"}]]);var $o=p("sort-ascending","IconSortAscending",[["path",{d:"M4 6l7 0",key:"svg-0"}],["path",{d:"M4 12l7 0",key:"svg-1"}],["path",{d:"M4 18l9 0",key:"svg-2"}],["path",{d:"M15 9l3 -3l3 3",key:"svg-3"}],["path",{d:"M18 6l0 12",key:"svg-4"}]]);var Ko=p("sort-descending","IconSortDescending",[["path",{d:"M4 6l9 0",key:"svg-0"}],["path",{d:"M4 12l7 0",key:"svg-1"}],["path",{d:"M4 18l7 0",key:"svg-2"}],["path",{d:"M15 15l3 3l3 -3",key:"svg-3"}],["path",{d:"M18 6l0 12",key:"svg-4"}]]);var zr=p("square","IconSquare",[["path",{d:"M3 3m0 2a2 2 0 0 1 2 -2h14a2 2 0 0 1 2 2v14a2 2 0 0 1 -2 2h-14a2 2 0 0 1 -2 -2z",key:"svg-0"}]]);var Wr=p("switch-horizontal","IconSwitchHorizontal",[["path",{d:"M16 3l4 4l-4 4",key:"svg-0"}],["path",{d:"M10 7l10 0",key:"svg-1"}],["path",{d:"M8 13l-4 4l4 4",key:"svg-2"}],["path",{d:"M4 17l9 0",key:"svg-3"}]]);var Xr=p("table-export","IconTableExport",[["path",{d:"M12.5 21h-7.5a2 2 0 0 1 -2 -2v-14a2 2 0 0 1 2 -2h14a2 2 0 0 1 2 2v7.5",key:"svg-0"}],["path",{d:"M3 10h18",key:"svg-1"}],["path",{d:"M10 3v18",key:"svg-2"}],["path",{d:"M16 19h6",key:"svg-3"}],["path",{d:"M19 16l3 3l-3 3",key:"svg-4"}]]);var jo=p("trash","IconTrash",[["path",{d:"M4 7l16 0",key:"svg-0"}],["path",{d:"M10 11l0 6",key:"svg-1"}],["path",{d:"M14 11l0 6",key:"svg-2"}],["path",{d:"M5 7l1 12a2 2 0 0 0 2 2h8a2 2 0 0 0 2 -2l1 -12",key:"svg-3"}],["path",{d:"M9 7v-3a1 1 0 0 1 1 -1h4a1 1 0 0 1 1 1v3",key:"svg-4"}]]);var Jr=p("x","IconX",[["path",{d:"M18 6l-12 12",key:"svg-0"}],["path",{d:"M6 6l12 12",key:"svg-1"}]]);import $r from"react";var ho=class extends $r.Component{constructor(t){super(t);this.state={}}static getDerivedStateFromError(t){return{error:t}}componentDidCatch(t,r){console.error("Uncaught error:",t,r)}render(){return this.state.error?$r.createElement(mi,{icon:$r.createElement(ro,{size:16}),title:"Something went wrong",color:"red"},pi(this.state.error)):this.props.children}};import{Center as xi,Loader as Ii}from"@mantine/core";import vn from"react";function Kr(){return vn.createElement(xi,{style:{width:"100%",height:"100vh"}},vn.createElement(Ii,null))}import{Avatar as Yi,createStyles as eu,Group as St,Header as ou,Menu as Ne,Stack as tu,Text as _o,UnstyledButton as Ln}from"@mantine/core";import{formatHumanName as ru,getReferenceString as Rn}from"@medplum/core";import Q,{useState as au}from"react";import{formatHumanName as gi}from"@medplum/core";import Sn from"react";function yt(e){let o=e.value;return o?Sn.createElement(Sn.Fragment,null,gi(o,e.options)):null}import{Avatar as kn}from"@mantine/core";import{getDisplayString as Fi,getImageSrc as wi}from"@medplum/core";import jr from"react";import{Anchor as hi}from"@mantine/core";import{isReference as Ci,isResource as yi}from"@medplum/core";import vi from"react";function V(e){e.preventDefault(),e.stopPropagation()}function vt(e){if(bn(e))return!0;if(e instanceof HTMLTableCellElement){let o=e.children;if(o.length===1&&bn(o[0]))return!0}return!1}function bn(e){return e instanceof HTMLInputElement&&e.type==="checkbox"}function se(e){let o=Qe(),{to:t,suffix:r,label:a,onClick:n,children:f,...s}=e,l=Si(t);return r&&(l+="/"+r),vi.createElement(hi,{href:l,"aria-label":a,onClick:i=>{V(i),n?n(i):t&&o(l)},...s},f)}function Si(e){if(e){if(typeof e=="string")return bi(e);if(yi(e))return Pi(e);if(Ci(e))return Di(e)}return"#"}function bi(e){return e.startsWith("http://")||e.startsWith("https://")||e.startsWith("/")?e:"/"+e}function Pi(e){return`/${e.resourceType}/${e.id}`}function Di(e){return`/${e.reference}`}import{deepEquals as Ti,isReference as Tn,isResource as ki,normalizeOperationOutcome as Bi}from"@medplum/core";import{useCallback as Ai,useEffect as Pn,useState as Mi}from"react";function X(e,o){let t=S(),[r,a]=Mi(Dn(t,e)),n=Ai(f=>{Ti(f,r)||a(f)},[r,a]);return Pn(()=>{n(Dn(t,e))},[t,e,n]),Pn(()=>{let f=!0;return Tn(e)&&t.readReference(e).then(s=>{f&&n(s)}).catch(s=>{f&&(n(void 0),o&&o(Bi(s)))}),()=>f=!1},[t,r,e,n,o]),r}function Dn(e,o){if(o){if(ki(o))return o;if(Tn(o))return e.getCachedReference(o)}}function Ce(e){let o=X(e.value),t=o?Fi(o):e.alt??"",r=(o&&wi(o))??e.src,a=e.radius??"xl",n={...e};return delete n.value,delete n.link,e.link?jr.createElement(se,{to:o},jr.createElement(kn,{src:r,alt:t,radius:a,...n})):jr.createElement(kn,{src:r,alt:t,radius:a,...n})}import{createStyles as Vi,Group as qi,Text as An}from"@mantine/core";import{formatHumanName as Gi,getDisplayString as On,getReferenceString as Ui,isUUID as Qi}from"@medplum/core";import We,{forwardRef as zi,useCallback as Mn}from"react";import{Loader as Oi,MultiSelect as Ei}from"@mantine/core";import{showNotification as Li}from"@mantine/notifications";import{normalizeErrorString as Ri}from"@medplum/core";import Bn,{useCallback as Co,useEffect as Ni,useRef as yo,useState as vo}from"react";function So(e){let{defaultValue:o,toKey:t,toOption:r,loadOptions:a,onChange:n,onCreate:f,creatable:s,...l}=e,i=Hi(o),u=yo(null),[d,c]=vo(),[g,y]=vo(),[A,v]=vo(),[D,B]=vo(),[x,O]=vo(i.map(r)),[h,F]=vo([]),_=yo();_.current=d;let Pe=yo();Pe.current=g;let fe=yo();fe.current=A;let Go=yo();Go.current=D;let C=yo();C.current=h;let H=Co(()=>{y(void 0);let ee=u.current?.value.trim()||"";if(ee===_.current)return;c(ee);let le=new AbortController;v(le),a(ee,le.signal).then(me=>{le.signal.aborted||(F(me.map(r)),v(void 0),Go.current&&(me.length>0&&n(me.slice(0,1)),B(!1)))}).catch(me=>{le.signal.aborted||me.message.includes("aborted")||Li({color:"red",message:Ri(me)})})},[a,n,r]),Be=Co(()=>{fe.current&&(fe.current.abort(),v(void 0)),Pe.current!==void 0&&window.clearTimeout(Pe.current);let ee=window.setTimeout(()=>H(),100);y(ee)},[H]),he=Co(ee=>{let le=[],me=[];for(let Uo of ee){let xt=C.current?.find(zs=>zs.value===Uo),Qo=xt?.resource;!Qo&&s!==!1&&f&&(Qo=f(Uo),xt=r(Qo)),Qo&&le.push(Qo),xt&&me.push(xt)}n(le),O(me)},[s,n,f,r]),oo=Co(ee=>{ee.key==="Enter"&&(!Pe.current&&!fe.current?(V(ee),C.current&&C.current.length>0&&(F(C.current.slice(0,1)),he([C.current[0].value]))):B(!0))},[he]),T=Co(ee=>{let le=r(f(ee));return F([...C.current,le]),le},[f,F,r]),W=Co((ee,le)=>!le,[]);return Ni(()=>()=>{fe.current&&fe.current.abort()},[]),Bn.createElement(Ei,{...l,ref:u,defaultValue:i.map(t),searchable:!0,onKeyDown:oo,onSearchChange:Be,data:[...x,...h],onFocus:H,onChange:he,onCreate:T,rightSectionWidth:40,rightSection:A?Bn.createElement(Oi,{size:16}):null,filter:W,creatable:!0})}function Hi(e){return e?Array.isArray(e)?e:[e]:[]}var Wi=Vi(()=>({searchInput:{input:{width:220,transition:"width 0.2s"},"input:focus":{width:400},"@media (max-width: 800px)":{input:{width:150},"input:focus":{width:150}}}}));function Xi(e){return e.id}function Ji(e){return{value:e.id,label:On(e),resource:e}}function En(e){let{classes:o}=Wi(),t=Qe(),r=S(),a=Mn(async(f,s)=>{let l=Ki(f),i={signal:s},u=await r.graphql(l,void 0,void 0,i);return ji(u,f)},[r]),n=Mn(f=>{f.length>0&&t(`/${Ui(f[0])}`)},[t]);return We.createElement(So,{key:`${e.pathname}?${e.searchParams}`,size:"sm",radius:"md",className:o.searchInput,icon:We.createElement(Qr,{size:16}),placeholder:"Search",itemComponent:$i,toKey:Xi,toOption:Ji,onChange:n,loadOptions:a,maxSelectedValues:0,clearSearchOnChange:!0,clearable:!1})}var $i=zi(({resource:e,...o},t)=>{let r;return e.resourceType==="Patient"?r=e.birthDate:e.resourceType==="ServiceRequest"&&(r=e.subject?.display),We.createElement("div",{ref:t,...o},We.createElement(qi,{noWrap:!0},We.createElement(Ce,{value:e}),We.createElement("div",null,We.createElement(An,null,On(e)),We.createElement(An,{size:"xs",color:"dimmed"},r))))});function Ki(e){let o=JSON.stringify(e);return Qi(e)?`{
1
+ import{formatAddress as Ys}from"@medplum/core";import un from"react";function dn(e){let o=e.value;return o?un.createElement(un.Fragment,null,Ys(o)):null}import{Group as ei,NativeSelect as cn,TextInput as Uo}from"@mantine/core";import Qe,{useRef as oi,useState as ti}from"react";function mn(e,o){return e.line&&e.line.length>o?e.line[o]:""}function pn(e,o,t){let r=e.line||[];for(;r.length<=o;)r.push("");return r[o]=t,{...e,line:r}}function xn(e){let[o,t]=ti(e.defaultValue||{}),r=oi();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(pn(r.current||{},0,c))}function l(c){a(pn(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 Qe.createElement(ei,{spacing:"xs",grow:!0,noWrap:!0},Qe.createElement(cn,{"data-testid":"address-use",defaultValue:o.use,onChange:c=>n(c.currentTarget.value),data:["","home","work","temp","old","billing"]}),Qe.createElement(cn,{"data-testid":"address-type",defaultValue:o.type,onChange:c=>f(c.currentTarget.value),data:["","postal","physical","both"]}),Qe.createElement(Uo,{placeholder:"Line 1",defaultValue:mn(o,0),onChange:c=>s(c.currentTarget.value)}),Qe.createElement(Uo,{placeholder:"Line 2",defaultValue:mn(o,1),onChange:c=>l(c.currentTarget.value)}),Qe.createElement(Uo,{placeholder:"City",defaultValue:o.city,onChange:c=>i(c.currentTarget.value)}),Qe.createElement(Uo,{placeholder:"State",defaultValue:o.state,onChange:c=>u(c.currentTarget.value)}),Qe.createElement(Uo,{placeholder:"Postal Code",defaultValue:o.postalCode,onChange:c=>d(c.currentTarget.value)}))}import{TextInput as ni}from"@mantine/core";import{createReference as fi}from"@medplum/core";import li,{useRef as si,useState as ii}from"react";import{createContext as ri,useContext as ai}from"react";var hr=ri(void 0);function Qo(){return ai(hr)}function v(){return Qo().medplum}function ze(){return Qo().navigate}function mt(){return Qo().profile}function In(e){let o=mt(),[t,r]=ii(e.defaultValue||{}),a=si();a.current=t;function n(f){let s=f?{text:f,authorReference:o&&fi(o),time:new Date().toISOString()}:{};r(s),e.onChange&&e.onChange(s)}return li.createElement(ni,{name:e.name,placeholder:"Annotation text",defaultValue:t.text,onChange:f=>n(f.currentTarget.value)})}import{AppShell as Qu,useMantineTheme as zu}from"@mantine/core";import ao,{Suspense as Wu,useState as Xu}from"react";import{Alert as Ii}from"@mantine/core";import{normalizeErrorString as gi}from"@medplum/core";import{forwardRef as ui,createElement as hn}from"react";import to from"prop-types";var gn={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 di=Object.defineProperty,ci=Object.defineProperties,mi=Object.getOwnPropertyDescriptors,pt=Object.getOwnPropertySymbols,vn=Object.prototype.hasOwnProperty,Sn=Object.prototype.propertyIsEnumerable,Cn=(e,o,t)=>o in e?di(e,o,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[o]=t,yn=(e,o)=>{for(var t in o||(o={}))vn.call(o,t)&&Cn(e,t,o[t]);if(pt)for(var t of pt(o))Sn.call(o,t)&&Cn(e,t,o[t]);return e},pi=(e,o)=>ci(e,mi(o)),xi=(e,o)=>{var t={};for(var r in e)vn.call(e,r)&&o.indexOf(r)<0&&(t[r]=e[r]);if(e!=null&&pt)for(var r of pt(e))o.indexOf(r)<0&&Sn.call(e,r)&&(t[r]=e[r]);return t},p=(e,o,t)=>{let r=ui((a,n)=>{var f=a,{color:s="currentColor",size:l=24,stroke:i=2,children:u}=f,d=xi(f,["color","size","stroke","children"]);return hn("svg",yn(pi(yn({ref:n},gn),{width:l,height:l,stroke:s,strokeWidth:i,className:`tabler-icon tabler-icon-${e}`}),d),[...t.map(([c,x])=>hn(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 Cr=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 yr=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 vr=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 Sr=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 br=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 Pr=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 Tr=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 Dr=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 kr=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 Br=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 Ar=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 Fr=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 Mr=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 wr=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 Or=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 Er=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 Lr=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 Rr=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 Nr=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 Hr=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 Vr=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 xt=p("math-greater","IconMathGreater",[["path",{d:"M5 18l14 -6l-14 -6",key:"svg-0"}]]);var It=p("math-lower","IconMathLower",[["path",{d:"M19 18l-14 -6l14 -6",key:"svg-0"}]]);var qr=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 Gr=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 Ur=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 Qr=p("plus","IconPlus",[["path",{d:"M12 5l0 14",key:"svg-0"}],["path",{d:"M5 12l14 0",key:"svg-1"}]]);var zr=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 Wr=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 Xr=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 Jr=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 Ko=p("trash","IconTrash",[["path",{d:"M4 7l16 0",key:"svg-0"}],["path",{d:"M10 11l0 6",key:"svg-1"}],["path",{d:"M14 11l0 6",key:"svg-2"}],["path",{d:"M5 7l1 12a2 2 0 0 0 2 2h8a2 2 0 0 0 2 -2l1 -12",key:"svg-3"}],["path",{d:"M9 7v-3a1 1 0 0 1 1 -1h4a1 1 0 0 1 1 1v3",key:"svg-4"}]]);var $r=p("x","IconX",[["path",{d:"M18 6l-12 12",key:"svg-0"}],["path",{d:"M6 6l12 12",key:"svg-1"}]]);import jr from"react";var ho=class extends jr.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?jr.createElement(Ii,{icon:jr.createElement(ro,{size:16}),title:"Something went wrong",color:"red"},gi(this.state.error)):this.props.children}};import{Center as hi,Loader as Ci}from"@mantine/core";import bn from"react";function _r(){return bn.createElement(hi,{style:{width:"100%",height:"100vh"}},bn.createElement(Ci,null))}import{Avatar as tu,createStyles as ru,Group as Ct,Header as au,Menu as He,Stack as nu,Text as $o,UnstyledButton as Nn}from"@mantine/core";import{formatHumanName as fu,getReferenceString as Hn}from"@medplum/core";import U,{useState as lu}from"react";import{formatHumanName as yi}from"@medplum/core";import Pn from"react";function gt(e){let o=e.value;return o?Pn.createElement(Pn.Fragment,null,yi(o,e.options)):null}import{Avatar as An}from"@mantine/core";import{getDisplayString as Ei,getImageSrc as Li}from"@medplum/core";import Zr from"react";import{Anchor as vi}from"@mantine/core";import{isReference as Si,isResource as bi}from"@medplum/core";import Pi from"react";function H(e){e.preventDefault(),e.stopPropagation()}function ht(e){if(Tn(e))return!0;if(e instanceof HTMLTableCellElement){let o=e.children;if(o.length===1&&Tn(o[0]))return!0}return!1}function Tn(e){return e instanceof HTMLInputElement&&e.type==="checkbox"}function se(e){let o=ze(),{to:t,suffix:r,label:a,onClick:n,children:f,...s}=e,l=Ti(t);return r&&(l+="/"+r),Pi.createElement(vi,{href:l,"aria-label":a,onClick:i=>{H(i),n?n(i):t&&o(l)},...s},f)}function Ti(e){if(e){if(typeof e=="string")return Di(e);if(bi(e))return ki(e);if(Si(e))return Bi(e)}return"#"}function Di(e){return e.startsWith("http://")||e.startsWith("https://")||e.startsWith("/")?e:"/"+e}function ki(e){return`/${e.resourceType}/${e.id}`}function Bi(e){return`/${e.reference}`}import{deepEquals as Ai,isReference as Bn,isResource as Fi,normalizeOperationOutcome as Mi}from"@medplum/core";import{useCallback as wi,useEffect as Dn,useState as Oi}from"react";function X(e,o){let t=v(),[r,a]=Oi(kn(t,e)),n=wi(f=>{Ai(f,r)||a(f)},[r,a]);return Dn(()=>{n(kn(t,e))},[t,e,n]),Dn(()=>{let f=!0;return Bn(e)&&t.readReference(e).then(s=>{f&&n(s)}).catch(s=>{f&&(n(void 0),o&&o(Mi(s)))}),()=>f=!1},[t,r,e,n,o]),r}function kn(e,o){if(o){if(Fi(o))return o;if(Bn(o))return e.getCachedReference(o)}}function ge(e){let o=X(e.value),t=o?Ei(o):e.alt??"",r=(o&&Li(o))??e.src,a=e.radius??"xl",n={...e};return delete n.value,delete n.link,e.link?Zr.createElement(se,{to:o},Zr.createElement(An,{src:r,alt:t,radius:a,...n})):Zr.createElement(An,{src:r,alt:t,radius:a,...n})}import{createStyles as Ui,Group as Qi,Text as Mn}from"@mantine/core";import{formatHumanName as zi,getDisplayString as Ln,getReferenceString as Wi,isUUID as Xi}from"@medplum/core";import Xe,{forwardRef as Ji,useCallback as wn}from"react";import{Loader as Ri,MultiSelect as Ni}from"@mantine/core";import{showNotification as Hi}from"@mantine/notifications";import{normalizeErrorString as Vi}from"@medplum/core";import Fn,{useCallback as Co,useEffect as qi,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=Gi(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 C=yo();C.current=g;let N=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")||Hi({color:"red",message:Vi(be)})})},[a,n,r]),ke=Co(()=>{Le.current&&(Le.current.abort(),T(void 0)),ne.current!==void 0&&window.clearTimeout(ne.current);let fe=window.setTimeout(()=>N(),100);y(fe)},[N]),Se=Co(fe=>{let te=[],be=[];for(let sn of fe){let ct=C.current?.find(Zs=>Zs.value===sn),Go=ct?.resource;!Go&&s!==!1&&f&&(Go=f(sn),ct=r(Go)),Go&&te.push(Go),ct&&be.push(ct)}n(te),O(be)},[s,n,f,r]),b=Co(fe=>{fe.key==="Enter"&&(!ne.current&&!Le.current?(H(fe),C.current&&C.current.length>0&&(M(C.current.slice(0,1)),Se([C.current[0].value]))):A(!0))},[Se]),W=Co(fe=>{let te=r(f(fe));return M([...C.current,te]),te},[f,M,r]),Re=Co((fe,te)=>!te,[]);return qi(()=>()=>{Le.current&&Le.current.abort()},[]),Fn.createElement(Ni,{...l,ref:u,defaultValue:i.map(t),searchable:!0,onKeyDown:b,onSearchChange:ke,data:[...I,...g],onFocus:N,onChange:Se,onCreate:W,rightSectionWidth:40,rightSection:k?Fn.createElement(Ri,{size:16}):null,filter:Re,creatable:!0})}function Gi(e){return e?Array.isArray(e)?e:[e]:[]}var Ki=Ui(()=>({searchInput:{input:{width:220,transition:"width 0.2s"},"input:focus":{width:400},"@media (max-width: 800px)":{input:{width:150},"input:focus":{width:150}}}}));function $i(e){return e.id}function ji(e){return{value:e.id,label:Ln(e),resource:e}}function Rn(e){let{classes:o}=Ki(),t=ze(),r=v(),a=wn(async(f,s)=>{let l=Zi(f),i={signal:s},u=await r.graphql(l,void 0,void 0,i);return Yi(u,f)},[r]),n=wn(f=>{f.length>0&&t(`/${Wi(f[0])}`)},[t]);return Xe.createElement(So,{key:`${e.pathname}?${e.searchParams}`,size:"sm",radius:"md",className:o.searchInput,icon:Xe.createElement(Wr,{size:16}),placeholder:"Search",itemComponent:_i,toKey:$i,toOption:ji,onChange:n,loadOptions:a,maxSelectedValues:0,clearSearchOnChange:!0,clearable:!1})}var _i=Ji(({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(Qi,{noWrap:!0},Xe.createElement(ge,{value:e}),Xe.createElement("div",null,Xe.createElement(Mn,null,Ln(e)),Xe.createElement(Mn,{size:"xs",color:"dimmed"},r))))});function Zi(e){let o=JSON.stringify(e);return Xi(e)?`{
2
2
  Patients1: PatientList(_id: ${o}, _count: 1) {
3
3
  resourceType
4
4
  id
@@ -61,8 +61,8 @@ import{formatAddress as Ws}from"@medplum/core";import nn from"react";function fn
61
61
  display
62
62
  }
63
63
  }
64
- }`.replace(/\s+/g," ")}function ji(e,o){let t=[];return e.data.Patients1&&t.push(...e.data.Patients1),e.data.Patients2&&t.push(...e.data.Patients2),e.data.ServiceRequestList&&t.push(...e.data.ServiceRequestList),Zi(_i(t),o).slice(0,5)}function _i(e){let o=new Set,t=[];for(let r of e)o.has(r.id)||(o.add(r.id),t.push(r));return t}function Zi(e,o){return e.sort((t,r)=>Fn(r,o)-Fn(t,o))}function Fn(e,o){let t=0;if(e.identifier)for(let r of e.identifier)t=Math.max(t,wn(r.value,o));if(e.resourceType==="Patient"&&e.name)for(let r of e.name)t=Math.max(t,wn(Gi(r),o));return t}function wn(e,o){if(!e)return 0;let t=e.toLowerCase().indexOf(o.toLowerCase());return t<0?0:100-t}var nu=eu(e=>({logoButton:{padding:`${e.spacing.xs} ${e.spacing.sm}`,borderRadius:e.radius.sm,transition:"background-color 100ms ease","&:hover":{backgroundColor:e.fn.lighten(e.fn.variant({variant:"filled",color:e.primaryColor}).background,.8)}},user:{padding:`${e.spacing.xs} ${e.spacing.sm}`,borderRadius:e.radius.sm,transition:"background-color 100ms ease","&:hover":{backgroundColor:e.fn.lighten(e.fn.variant({variant:"filled",color:e.primaryColor}).background,.8)}},userName:{fontWeight:500,lineHeight:1,marginRight:3,[e.fn.smallerThan("xs")]:{display:"none"}},userActive:{backgroundColor:e.fn.lighten(e.fn.variant({variant:"filled",color:e.primaryColor}).background,.8)}}));function Nn(e){let o=Wo(),{medplum:t,profile:r,navigate:a}=o,n=t.getLogins(),{classes:f,cx:s}=nu(),[l,i]=au(!1);return Q.createElement(ou,{height:60,p:8,style:{zIndex:101}},Q.createElement(St,{position:"apart"},Q.createElement(St,{spacing:"xs"},Q.createElement(Ln,{className:f.logoButton,onClick:e.navbarToggle},e.logo),!e.headerSearchDisabled&&Q.createElement(En,{pathname:e.pathname,searchParams:e.searchParams})),Q.createElement(Ne,{width:260,shadow:"xl",position:"bottom-end",transitionProps:{transition:"pop-top-right"},opened:l,onClose:()=>i(!1)},Q.createElement(Ne.Target,null,Q.createElement(Ln,{className:s(f.user,{[f.userActive]:l}),onClick:()=>i(u=>!u)},Q.createElement(St,{spacing:7},Q.createElement(Ce,{value:r,radius:"xl",size:24}),Q.createElement(_o,{size:"sm",className:f.userName},ru(r?.name?.[0])),Q.createElement(kr,{size:12,stroke:1.5})))),Q.createElement(Ne.Dropdown,null,Q.createElement(tu,{align:"center",p:"xl"},Q.createElement(Ce,{size:"xl",radius:100,value:o.profile}),Q.createElement(yt,{value:o.profile?.name?.[0]}),Q.createElement(_o,{color:"dimmed",size:"xs"},t.getActiveLogin()?.project.display)),n.length>1&&Q.createElement(Ne.Divider,null),n.map(u=>u.profile.reference!==Rn(o.profile)&&Q.createElement(Ne.Item,{key:u.profile.reference,onClick:()=>{t.setActiveLogin(u).then(()=>window.location.reload()).catch(console.log)}},Q.createElement(St,null,Q.createElement(Yi,{radius:"xl"}),Q.createElement("div",{style:{flex:1}},Q.createElement(_o,{size:"sm",weight:500},u.profile.display),Q.createElement(_o,{color:"dimmed",size:"xs"},u.project.display))))),Q.createElement(Ne.Divider,null),Q.createElement(Ne.Item,{icon:Q.createElement(Wr,{size:14,stroke:1.5}),onClick:()=>a("/signin")},"Add another account"),Q.createElement(Ne.Item,{icon:Q.createElement(go,{size:14,stroke:1.5}),onClick:()=>a(`/${Rn(r)}`)},"Account settings"),Q.createElement(Ne.Item,{icon:Q.createElement(Nr,{size:14,stroke:1.5}),onClick:async()=>{await t.signOut(),a("/signin")}},"Sign out"),Q.createElement(_o,{size:"xs",color:"dimmed",align:"center"},e.version)))))}import{Button as Mu,createStyles as Fu,Navbar as Zr,ScrollArea as wu,Space as Ou,Text as Eu}from"@mantine/core";import ne,{useState as Lu}from"react";import{Button as iu,Group as uu,Modal as du,NativeSelect as cu,Stack as mu,TextInput as pu}from"@mantine/core";import{showNotification as Vn}from"@mantine/notifications";import{deepClone as xu,normalizeErrorString as Iu}from"@medplum/core";import Xe from"react";import su from"react";function Hn(e){let o={};for(let t of Array.from(e.elements))t instanceof HTMLInputElement?fu(o,t):t instanceof HTMLTextAreaElement?o[t.name]=t.value:t instanceof HTMLSelectElement&&lu(o,t);return o}function fu(e,o){o.disabled||(o.type==="checkbox"||o.type==="radio")&&!o.checked||(e[o.name]=o.value)}function lu(e,o){e[o.name]=o.value}function $(e){return su.createElement("form",{style:e.style,"data-testid":e.testid,onSubmit:o=>{o.preventDefault();let t=Hn(o.target);e.onSubmit&&e.onSubmit(t)}},e.children)}function qn(e){let o=S(),t=o.getUserConfiguration();function r(a){let{menuname:n,bookmarkname:f}=a,s=`${e.pathname}?${e.searchParams.toString()}`,l=xu(t);l.menu?.find(({title:u})=>u===n)?.link?.push({name:f,target:s}),o.updateResource(l).then(u=>{t.menu=u.menu,o.dispatchEvent({type:"change"}),Vn({color:"green",message:"Success"}),e.onOk()}).catch(u=>{Vn({color:"red",message:Iu(u)})})}return Xe.createElement(du,{title:"Add Bookmark",closeButtonProps:{"aria-label":"Close"},opened:e.visible,onClose:e.onCancel},Xe.createElement($,{onSubmit:r},Xe.createElement(mu,null,Xe.createElement(gu,{config:t}),Xe.createElement(pu,{label:"Bookmark Name",type:"text",name:"bookmarkname",placeholder:"Bookmark Name",withAsterisk:!0}),Xe.createElement(uu,{position:"right"},Xe.createElement(iu,{mt:"sm",type:"submit"},"OK")))))}function gu(e){function o(r){return r?.menu?.map(a=>a.title)}let t=o(e.config);return Xe.createElement(cu,{name:"menuname",defaultValue:t[0],label:"Select Menu Option",placeholder:"Menu",data:t,withAsterisk:!0})}import ku,{useCallback as Bu,useState as Au}from"react";import bu,{useState as Pu}from"react";import hu,{useCallback as Cu}from"react";function _r(e){return typeof e.code=="string"?e.code:JSON.stringify(e)}function yu(e){return typeof e.display=="string"?e.display:_r(e)}function vu(e){return{value:_r(e),label:yu(e),resource:e}}function Su(e){return{code:e,display:e}}function Je(e){let o=S(),{binding:t,creatable:r,clearable:a,...n}=e,f=Cu(async(s,l)=>{if(!t)return[];let u=(await o.searchValueSet(t,s,{signal:l})).expansion?.contains,d=[];for(let c of u)c.code&&!d.some(g=>g.code===c.code)&&d.push(c);return d},[o,t]);return hu.createElement(So,{...n,creatable:r??!0,clearable:a??!0,toKey:_r,toOption:vu,loadOptions:f,onCreate:Su,getCreateLabel:r===!1?void 0:s=>`+ Create ${s}`})}function bt(e){let[o,t]=Pu(e.defaultValue);function r(a){let n=a[0],f=Tu(n);t(f),e.onChange&&e.onChange(f)}return bu.createElement(Je,{binding:e.binding,name:e.name,placeholder:e.placeholder,defaultValue:Du(o),onChange:r,creatable:e.creatable,maxSelectedValues:e.maxSelectedValues??1,clearSearchOnChange:e.clearSearchOnChange,clearable:e.clearable})}function Du(e){return e?{code:e}:void 0}function Tu(e){return e?.code}function bo(e){let[o,t]=Au(e.defaultValue),r=e.onChange,a=Bu(n=>{t(n),r&&r(n)},[r]);return ku.createElement(bt,{"data-autofocus":e.autoFocus,"data-testid":e.testId,defaultValue:o,onChange:a,name:e.name,placeholder:e.placeholder,binding:"https://medplum.com/fhir/ValueSet/resource-types",creatable:!1,maxSelectedValues:0,clearSearchOnChange:!0,clearable:!1})}var Gn=Fu(e=>({menuTitle:{margin:"20px 0 4px 6px",fontSize:"9px",fontWeight:"normal",textTransform:"uppercase",letterSpacing:"2px"},link:{...e.fn.focusStyles(),display:"flex",alignItems:"center",textDecoration:"none",fontSize:e.fontSizes.sm,color:e.colorScheme==="dark"?e.colors.dark[1]:e.colors.gray[7],padding:"8px 12px",borderRadius:e.radius.sm,fontWeight:500,"&:hover":{backgroundColor:e.colorScheme==="dark"?e.colors.dark[6]:e.colors.gray[0],color:e.colorScheme==="dark"?e.white:e.black,textDecoration:"none","& svg":{color:e.colorScheme==="dark"?e.white:e.black}},"& svg":{color:e.colorScheme==="dark"?e.colors.dark[2]:e.colors.gray[6],marginRight:e.spacing.sm,strokeWidth:1.5,width:18,height:18}},linkActive:{"&, &:hover":{backgroundColor:e.fn.variant({variant:"light",color:e.primaryColor}).background,color:e.fn.variant({variant:"light",color:e.primaryColor}).color,"& svg":{color:e.fn.variant({variant:"light",color:e.primaryColor}).color}}}}));function Un(e){let{classes:o}=Gn(),t=Qe(),r=Hu(e.pathname,e.searchParams,e.menus),[a,n]=Lu(!1);function f(l,i){l.stopPropagation(),l.preventDefault(),t(i),window.innerWidth<768&&e.closeNavbar()}function s(l){l&&t(`/${l}`)}return ne.createElement(ne.Fragment,null,ne.createElement(Zr,{width:{sm:250},p:"xs"},ne.createElement(wu,null,!e.resourceTypeSearchDisabled&&ne.createElement(Zr.Section,{mb:"sm"},ne.createElement(bo,{key:window.location.pathname,name:"resourceType",placeholder:"Resource Type",onChange:l=>s(l)})),ne.createElement(Zr.Section,{grow:!0},e.menus?.map(l=>ne.createElement(ne.Fragment,{key:`menu-${l.title}`},ne.createElement(Eu,{className:o.menuTitle},l.title),l.links?.map(i=>ne.createElement(Ru,{key:i.href,to:i.href,active:i.href===r?.href,onClick:u=>f(u,i.href)},ne.createElement(Nu,{to:i.href,icon:i.icon}),ne.createElement("span",null,i.label))))),e.displayAddBookmark&&ne.createElement(Mu,{variant:"subtle",size:"xs",mt:"xl",leftIcon:ne.createElement(Gr,{size:"0.75rem"}),onClick:()=>n(!0)},"Add Bookmark")))),e.pathname&&e.searchParams&&ne.createElement(qn,{pathname:e.pathname,searchParams:e.searchParams,visible:a,onOk:()=>n(!1),onCancel:()=>n(!1)}))}function Ru(e){let{classes:o,cx:t}=Gn();return ne.createElement(se,{onClick:e.onClick,to:e.to,className:t(o.link,{[o.linkActive]:e.active})},e.children)}function Nu(e){return e.icon?e.icon:ne.createElement(Ou,{w:30})}function Hu(e,o,t){if(!e||!o||!t)return;let r,a=0;for(let n of t)if(n.links)for(let f of n.links){let s=Vu(e,o,f.href);s>a&&(a=s,r=f)}return r}function Vu(e,o,t){let r=new URL(t,"https://example.com");if(e!==r.pathname)return 0;let a=["_count","_offset"];for(let[f,s]of r.searchParams.entries())if(!a.includes(f)&&o.get(f)!==s)return 0;let n=1;for(let[f,s]of o.entries())a.includes(f)||r.searchParams.get(f)===s&&n++;return n}function Ab(e){let o=Gu(),[t,r]=Qu(localStorage.navbarOpen==="true"),a=S(),n=It();function f(i){localStorage.navbarOpen=i.toString(),r(i)}function s(){f(!1)}function l(){f(!t)}return a.isLoading()?ao.createElement(Kr,null):ao.createElement(qu,{styles:{main:{background:o.colorScheme==="dark"?o.colors.dark[8]:o.colors.gray[0]}},padding:0,fixed:!0,header:n&&ao.createElement(Nn,{pathname:e.pathname,searchParams:e.searchParams,headerSearchDisabled:e.headerSearchDisabled,logo:e.logo,version:e.version,navbarToggle:l}),navbar:n&&t?ao.createElement(Un,{pathname:e.pathname,searchParams:e.searchParams,menus:e.menus,closeNavbar:s,displayAddBookmark:e.displayAddBookmark,resourceTypeSearchDisabled:e.resourceTypeSearchDisabled}):void 0},ao.createElement(ho,{key:`${e.pathname}?${e.searchParams?.toString()}`},ao.createElement(Uu,{fallback:ao.createElement(Kr,null)},e.children)))}import Yr from"react";import{Anchor as zu}from"@mantine/core";import $e from"react";function Ee(e){let o=e.value,{contentType:t,url:r,title:a}=o??{};return r?$e.createElement("div",{"data-testid":"attachment-display"},t?.startsWith("image/")&&$e.createElement("img",{"data-testid":"attachment-image",style:{maxWidth:e.maxWidth},src:r,alt:o?.title}),t?.startsWith("video/")&&$e.createElement("video",{"data-testid":"attachment-video",style:{maxWidth:e.maxWidth},controls:!0},$e.createElement("source",{type:t,src:r})),t==="application/pdf"&&!a?.endsWith(".pdf")&&$e.createElement("div",{"data-testid":"attachment-pdf",style:{maxWidth:e.maxWidth,minHeight:400}},$e.createElement("iframe",{width:"100%",height:"400",src:r+"#navpanes=0",allowFullScreen:!0,frameBorder:0,seamless:!0})),$e.createElement("div",{"data-testid":"download-link",style:{padding:"2px 16px 16px 16px"}},$e.createElement(zu,{href:o?.url,"data-testid":"attachment-details",target:"_blank",rel:"noopener noreferrer"},o?.title||"Download"))):null}function Qn(e){return Yr.createElement("div",null,e.values?.map((o,t)=>Yr.createElement("div",{key:"attatchment-"+t},Yr.createElement(Ee,{value:o,maxWidth:e.maxWidth}))))}import{ActionIcon as zn}from"@mantine/core";import ie,{useRef as Xu,useState as Ju}from"react";import ea,{useRef as Wu}from"react";function Po(e){let o=S(),t=Wu(null);function r(f){V(f),t.current?.click()}function a(f){V(f);let s=f.target.files;s&&Array.from(s).forEach(n)}function n(f){if(!f||!f.name)return;e.onUploadStart&&e.onUploadStart();let l=f.name,i=f.type||"application/octet-stream";o.createBinary(f,l,i,e.onUploadProgress).then(u=>{e.onUpload({contentType:u.contentType,url:u.url,title:l})}).catch(u=>{alert(u.issue?.[0]?.details?.text)})}return ea.createElement(ea.Fragment,null,ea.createElement("input",{type:"file","data-testid":"upload-file-input",style:{display:"none"},ref:t,onChange:f=>a(f)}),e.children({onClick:r}))}function Wn(e){let[o,t]=Ju(e.defaultValue??[]),r=Xu();r.current=o;function a(n){t(n),e.onChange&&e.onChange(n)}return ie.createElement("table",{style:{width:"100%"}},ie.createElement("colgroup",null,ie.createElement("col",{width:"97%"}),ie.createElement("col",{width:"3%"})),ie.createElement("tbody",null,o.map((n,f)=>ie.createElement("tr",{key:`${f}-${o.length}`},ie.createElement("td",null,ie.createElement(Ee,{value:n,maxWidth:200})),ie.createElement("td",null,ie.createElement(zn,{title:"Remove",size:"sm",onClick:s=>{V(s);let l=o.slice();l.splice(f,1),a(l)}},ie.createElement(ze,null))))),ie.createElement("tr",null,ie.createElement("td",null),ie.createElement("td",null,ie.createElement(Po,{onUpload:n=>{a([...r.current,n])}},n=>ie.createElement(zn,{...n,title:"Add",size:"sm",color:"green"},ie.createElement(Jo,{size:16})))))))}import{Button as Xn}from"@mantine/core";import Do,{useState as $u}from"react";function Pt(e){let[o,t]=$u(e.defaultValue);function r(a){t(a),e.onChange&&e.onChange(a)}return o?Do.createElement(Do.Fragment,null,Do.createElement(Ee,{value:o,maxWidth:200}),Do.createElement(Xn,{onClick:a=>{V(a),r(void 0)}},"Remove")):Do.createElement(Po,{onUpload:r},a=>Do.createElement(Xn,{...a},"Upload..."))}import{getPropertyDisplayName as cd,tryGetDataType as md}from"@medplum/core";import ot from"react";var Dt=["meta","implicitRules","language","text","contained","extension","modifierExtension"];import{createStyles as Ku}from"@mantine/core";import Zo from"react";var ju=Ku(e=>({root:{display:"grid",gridTemplateColumns:"30% 70%",margin:0,"& > dt, & > dd":{padding:`${e.spacing.sm} ${e.spacing.sm}`,borderTop:`0.1px solid ${e.colors.gray[3]}`,margin:0}},compact:{gridTemplateColumns:"20% 80%","& > dt, & > dd":{padding:`0 ${e.spacing.xs} ${e.spacing.xs} 0`,border:0}}}));function Jn(e){let{children:o,compact:t}=e,{classes:r,cx:a}=ju();return Zo.createElement("dl",{className:a(r.root,{[r.compact]:t})},o)}function $n(e){return Zo.createElement(Zo.Fragment,null,Zo.createElement("dt",null,e.term),Zo.createElement("dd",null,e.children))}import{ActionIcon as ad,Box as nd,CopyButton as fd,Tooltip as ld}from"@mantine/core";import{PropertyType as q,formatDateTime as sd,formatPeriod as id,formatTiming as ud,getTypedPropertyValue as dd}from"@medplum/core";import L from"react";import{formatCodeableConcept as _u}from"@medplum/core";import Kn from"react";function To(e){return Kn.createElement(Kn.Fragment,null,_u(e.value))}import{formatCoding as Zu}from"@medplum/core";import jn from"react";function _n(e){return jn.createElement(jn.Fragment,null,Zu(e.value))}import oa from"react";import Zn from"react";function Tt(e){let o=e.value;if(!o)return null;let t=[];return o.value&&t.push(o.value),(o.use||o.system)&&(t.push(" ["),o.use&&t.push(o.use),o.use&&o.system&&t.push(" "),o.system&&t.push(o.system),t.push("]")),Zn.createElement(Zn.Fragment,null,t.join("").trim())}function Yn(e){let o=e.value;return o?oa.createElement(oa.Fragment,null,o.name,o.name&&": ",o.telecom?.map(t=>oa.createElement(Tt,{key:`telecom-${o.name}-${t.value}`,value:t}))):null}import Yu from"react";function ef(e){return Yu.createElement("div",null,e.value?.system,": ",e.value?.value)}import{formatMoney as ed}from"@medplum/core";import of from"react";function tf(e){return of.createElement(of.Fragment,null,ed(e.value))}import{formatQuantity as od}from"@medplum/core";import rf from"react";function Yo(e){return rf.createElement(rf.Fragment,null,od(e.value))}import{formatRange as td}from"@medplum/core";import af from"react";function kt(e){return af.createElement(af.Fragment,null,td(e.value))}import Bt from"react";function nf(e){let o=e.value;return o?Bt.createElement(Bt.Fragment,null,Bt.createElement(Yo,{value:o.numerator}),"\xA0/\xA0",Bt.createElement(Yo,{value:o.denominator})):null}import{stringify as rd}from"@medplum/core";import ta from"react";function no(e){if(!e.value)return null;let o=e.value.display||e.value.reference||rd(e.value);return e.link!==!1&&e.value.reference?ta.createElement(se,{to:e.value},o):ta.createElement(ta.Fragment,null,o)}import ko from"react";function ff(e){let{property:o,values:t}=e,r=o.type[0].code;return e.values?ko.createElement(ko.Fragment,null,t.map((a,n)=>ko.createElement("div",{key:`${n}-${t.length}`},ko.createElement(pe,{arrayElement:!0,property:o,propertyType:r,value:a,ignoreMissingValues:e.ignoreMissingValues,link:e.link})))):ko.createElement(ko.Fragment,null)}function pe(e){let{property:o,propertyType:t,value:r}=e;if(o?.path?.endsWith(".id"))return L.createElement(nd,{component:"div",sx:{display:"flex",gap:3,alignItems:"center"}},r,L.createElement(fd,{value:r,timeout:2e3},({copied:n,copy:f})=>L.createElement(ld,{label:n?"Copied":"Copy",withArrow:!0,position:"right"},L.createElement(ad,{color:n?"teal":"gray",onClick:f},n?L.createElement(Xo,{size:"1rem"}):L.createElement(Ar,{size:"1rem"})))));if(o?.max&&o.max>1&&!e.arrayElement)return t===q.Attachment?L.createElement(Qn,{values:r,maxWidth:e.maxWidth}):L.createElement(ff,{property:o,values:r,ignoreMissingValues:e.ignoreMissingValues,link:e.link});switch(t){case q.boolean:return L.createElement(L.Fragment,null,r===void 0?"":(!!r).toString());case q.SystemString:case q.string:return L.createElement("div",{style:{whiteSpace:"pre-wrap"}},r);case q.code:case q.date:case q.decimal:case q.integer:case q.positiveInt:case q.unsignedInt:case q.uri:case q.url:return L.createElement(L.Fragment,null,r);case q.canonical:return L.createElement(no,{value:{reference:r},link:e.link});case q.dateTime:case q.instant:return L.createElement(L.Fragment,null,sd(r));case q.markdown:return L.createElement("pre",null,r);case q.Address:return L.createElement(fn,{value:r});case q.Annotation:return L.createElement(L.Fragment,null,r?.text);case q.Attachment:return L.createElement(Ee,{value:r,maxWidth:e.maxWidth});case q.CodeableConcept:return L.createElement(To,{value:r});case q.Coding:return L.createElement(_n,{value:r});case q.ContactDetail:return L.createElement(Yn,{value:r});case q.ContactPoint:return L.createElement(Tt,{value:r});case q.HumanName:return L.createElement(yt,{value:r});case q.Identifier:return L.createElement(ef,{value:r});case q.Money:return L.createElement(tf,{value:r});case q.Period:return L.createElement(L.Fragment,null,id(r));case q.Quantity:case q.Duration:return L.createElement(Yo,{value:r});case q.Range:return L.createElement(kt,{value:r});case q.Ratio:return L.createElement(nf,{value:r});case q.Reference:return L.createElement(no,{value:r,link:e.link});case q.Timing:return L.createElement(L.Fragment,null,ud(r));case q.Dosage:case q.UsageContext:return L.createElement(et,{value:{type:t,value:r},compact:!0,ignoreMissingValues:e.ignoreMissingValues});default:if(!o)throw Error(`Displaying property of type ${e.propertyType} requires element schema`);return L.createElement(et,{value:{type:o.type[0].code,value:r},compact:!0,ignoreMissingValues:e.ignoreMissingValues})}}function Se(e,o){let t=dd(e,o);return t?Array.isArray(t)?[t.map(r=>r.value),t[0].type]:[t.value,t.type]:[void 0,"undefined"]}function et(e){let o=e.value,t=o.value;if(!t)return null;let r=o.type,a=md(r);return a?typeof t=="object"&&"name"in t&&Object.keys(t).length===1&&typeof t.name=="string"?ot.createElement("div",null,t.name):ot.createElement(Jn,{compact:e.compact},Object.entries(a.elements).map(n=>{let[f,s]=n;if(Dt.includes(f))return null;let[l,i]=Se(o,f);return e.ignoreMissingValues&&(!l||Array.isArray(l)&&l.length===0)?null:ot.createElement($n,{key:f,term:cd(f)},ot.createElement(pe,{property:s,propertyType:i,value:l,ignoreMissingValues:e.ignoreMissingValues,link:e.link}))})):ot.createElement("div",null,r,"\xA0not implemented")}import{Stack as Wc}from"@mantine/core";import{getPropertyDisplayName as Nf,tryGetDataType as Xc}from"@medplum/core";import Mo,{useState as Jc}from"react";import{Group as pd,Input as xd}from"@mantine/core";import At from"react";function Mt(e){return At.createElement(pd,{noWrap:!0},At.createElement("div",null,e.children),At.createElement("div",null,At.createElement(xd.Wrapper,{id:e.htmlFor,label:e.title,description:e.description,withAsterisk:e.withAsterisk},(()=>null)())))}import{Input as Id}from"@mantine/core";import gd from"react";function xe(e,o){return e?.issue?.filter(t=>lf(t.expression?.[0],o))?.map(t=>t.details?.text)?.join(`
65
- `)}function Ft(e,o){return e?.issue?.filter(t=>lf(t.expression?.[0],o))}function lf(e,o){if(e===o)return!0;if(!e||!o)return!1;let t=e.indexOf(".");if(t>=0&&e.substring(t+1)===o)return!0;let r=o.indexOf(".");return r>=0&&o.substring(r+1)===e}function be(e){return gd.createElement(Id.Wrapper,{id:e.htmlFor,label:e.title,description:e.description,withAsterisk:e.withAsterisk,error:xe(e.outcome,e.htmlFor)},e.children)}import{Button as sf,Group as hd,Stack as Cd,TextInput as uf}from"@mantine/core";import{capitalize as yd,deepClone as vd}from"@medplum/core";import Ae,{useEffect as Sd,useState as df}from"react";function BD(e){let o=S(),t=X(e.defaultValue),[r,a]=df(!1),[n,f]=df();return Sd(()=>{t&&(f(vd(t)),o.requestSchema(t.resourceType).then(()=>a(!0)).catch(console.log))},[o,t]),!r||!n?Ae.createElement("div",null,"Loading..."):Ae.createElement("form",{noValidate:!0,autoComplete:"off",onSubmit:s=>{s.preventDefault(),e.onSubmit&&e.onSubmit(n)}},Ae.createElement(Cd,{mb:"xl"},Ae.createElement(be,{title:"Resource Type",htmlFor:"resourceType",outcome:e.outcome},Ae.createElement(uf,{name:"resourceType",defaultValue:n.resourceType,disabled:!0})),Ae.createElement(be,{title:"ID",htmlFor:"id",outcome:e.outcome},Ae.createElement(uf,{name:"id",defaultValue:n.id,disabled:!0}))),Ae.createElement(rt,{typeName:n.resourceType,defaultValue:n,outcome:e.outcome,onChange:f}),Ae.createElement(hd,{position:"right",mt:"xl"},Ae.createElement(sf,{type:"submit"},"OK"),e.onDelete&&Ae.createElement(sf,{variant:"outline",color:"red",type:"button",onClick:()=>{e.onDelete(n)}},"Delete")))}function tt(e,o,t,r,a){let n=r.type;if(n.length>1)for(let f of n){let s=o.replace("[x]",yd(f.code));s in e&&delete e[s]}return e[t]=a,e}import{Checkbox as Nc,Group as Hc,NativeSelect as Vc,Textarea as qc,TextInput as da}from"@mantine/core";import{capitalize as Gc,PropertyType as R}from"@medplum/core";import U,{useState as Uc}from"react";import bd,{useState as Pd}from"react";function cf(e){let[o,t]=Pd(e.defaultValue);function r(a){let n=Td(a);t(n),e.onChange&&e.onChange(n)}return bd.createElement(Je,{binding:e.binding,name:e.name,placeholder:e.placeholder,defaultValue:o&&Dd(o),maxSelectedValues:1,onChange:r})}function Dd(e){return e.coding?.map(o=>({system:o.system,code:o.code,display:o.display}))}function Td(e){if(e.length!==0)return{coding:e.map(o=>({system:o.system,code:o.code,display:o.display}))}}import kd,{useState as Bd}from"react";function mf(e){let[o,t]=Bd(e.defaultValue);function r(a){let n=a[0],f=n&&Md(n);t(f),e.onChange&&e.onChange(f)}return kd.createElement(Je,{binding:e.binding,name:e.name,placeholder:e.placeholder,defaultValue:o&&Ad(o),maxSelectedValues:1,onChange:r})}function Ad(e){return{system:e.system,code:e.code,display:e.display}}function Md(e){return{system:e.system,code:e.code,display:e.display}}import{Group as Ld,TextInput as Rd}from"@mantine/core";import ra,{useRef as Nd,useState as Hd}from"react";import{Group as Fd,NativeSelect as pf,TextInput as wd}from"@mantine/core";import wt,{useRef as Od,useState as Ed}from"react";function Ot(e){let[o,t]=Ed(e.defaultValue),r=Od();r.current=o;function a(l){l&&Object.keys(l).length===0&&(l=void 0),t(l),e.onChange&&e.onChange(l)}function n(l){let i={...r.current,system:l};l||delete i.system,a(i)}function f(l){let i={...r.current,use:l};l||delete i.use,a(i)}function s(l){let i={...r.current,value:l};l||delete i.value,a(i)}return wt.createElement(Fd,{spacing:"xs",grow:!0,noWrap:!0},wt.createElement(pf,{"data-testid":"system",defaultValue:o?.system,onChange:l=>n(l.currentTarget.value),data:["","email","phone","fax","pager","sms","other"]}),wt.createElement(pf,{"data-testid":"use",defaultValue:o?.use,onChange:l=>f(l.currentTarget.value),data:["","home","work","temp","old","mobile"]}),wt.createElement(wd,{placeholder:"Value",defaultValue:o?.value,onChange:l=>s(l.currentTarget.value)}))}function xf(e){let[o,t]=Hd(e.defaultValue),r=Nd();r.current=o;function a(s){t(s),e.onChange&&e.onChange(s)}function n(s){let l={...r.current,name:s};s||delete l.name,a(l)}function f(s){let l={...r.current,telecom:s&&[s]};s||delete l.telecom,a(l)}return ra.createElement(Ld,{spacing:"xs",grow:!0,noWrap:!0},ra.createElement(Rd,{"data-testid":e.name+"-name",name:e.name+"-name",placeholder:"Name",style:{width:180},defaultValue:o?.name,onChange:s=>n(s.currentTarget.value)}),ra.createElement(Ot,{name:e.name+"-telecom",defaultValue:o?.telecom?.[0],onChange:f}))}import{TextInput as Vd}from"@mantine/core";import{isValidDate as If}from"@medplum/core";import qd from"react";function Me(e){return qd.createElement(Vd,{id:e.name,name:e.name,"data-autofocus":e.autoFocus,"data-testid":e.name,placeholder:e.placeholder,required:e.required,type:Qd(),defaultValue:Gd(e.defaultValue),autoFocus:e.autoFocus,error:xe(e.outcome,e.name),onChange:o=>{if(e.onChange){let t=o.currentTarget.value;e.onChange(Ud(t))}}})}function Gd(e){if(!e)return"";let o=new Date(e);return If(o)?o.toLocaleDateString("sv")+"T"+o.toLocaleTimeString("sv"):""}function Ud(e){if(!e)return"";let o=new Date(e);return If(o)?o.toISOString():""}function Qd(){return"datetime-local"}import{JsonInput as zd}from"@mantine/core";import{stringify as Wd}from"@medplum/core";import Xd from"react";function gf(e){return Xd.createElement(zd,{id:e.name,name:e.name,"data-testid":"extension-input",defaultValue:Wd(e.defaultValue),deserialize:JSON.parse,onChange:o=>{e.onChange&&e.onChange(JSON.parse(o))}})}import{Group as Jd,NativeSelect as $d,TextInput as Et}from"@mantine/core";import Bo,{useRef as Kd,useState as jd}from"react";function hf(e){let[o,t]=jd(e.defaultValue),r=Kd();r.current=o;function a(u){t(u),e.onChange&&e.onChange(u)}function n(u){a({...r.current,use:u||void 0})}function f(u){a({...r.current,prefix:u?u.split(" "):void 0})}function s(u){a({...r.current,given:u?u.split(" "):void 0})}function l(u){a({...r.current,family:u||void 0})}function i(u){a({...r.current,suffix:u?u.split(" "):void 0})}return Bo.createElement(Jd,{spacing:"xs",grow:!0,noWrap:!0},Bo.createElement($d,{defaultValue:o?.use,name:e.name+"-use","data-testid":"use",onChange:u=>n(u.currentTarget.value),data:["","temp","old","usual","official","nickname","anonymous","maiden"]}),Bo.createElement(Et,{placeholder:"Prefix",name:e.name+"-prefix",defaultValue:o?.prefix?.join(" "),onChange:u=>f(u.currentTarget.value)}),Bo.createElement(Et,{placeholder:"Given",name:e.name+"-given",defaultValue:o?.given?.join(" "),onChange:u=>s(u.currentTarget.value)}),Bo.createElement(Et,{name:e.name+"-family",placeholder:"Family",defaultValue:o?.family,onChange:u=>l(u.currentTarget.value)}),Bo.createElement(Et,{placeholder:"Suffix",name:e.name+"-suffix",defaultValue:o?.suffix?.join(" "),onChange:u=>i(u.currentTarget.value)}))}import{Group as _d,TextInput as Cf}from"@mantine/core";import aa,{useState as Zd}from"react";function yf(e){let[o,t]=Zd(e.defaultValue);function r(a){t(a),e.onChange&&e.onChange(a)}return aa.createElement(_d,{spacing:"xs",grow:!0,noWrap:!0},aa.createElement(Cf,{placeholder:"System",defaultValue:o?.system,onChange:a=>r({...o,system:a.currentTarget.value})}),aa.createElement(Cf,{placeholder:"Value",defaultValue:o?.value,onChange:a=>r({...o,value:a.currentTarget.value})}))}import{NativeSelect as Yd,TextInput as ec}from"@mantine/core";import na,{useCallback as fa,useState as oc}from"react";var tc=["USD","EUR","CAD","GBP","AUD"];function vf(e){let{onChange:o}=e,[t,r]=oc(e.defaultValue),a=fa(l=>{r(l),o&&o(l)},[o]),n=fa(l=>{a({...t,currency:l.currentTarget.value})},[t,a]),f=fa(l=>{a({...t,value:l.currentTarget.valueAsNumber})},[t,a]),s=na.createElement(Yd,{defaultValue:t?.currency,data:tc,styles:{input:{fontWeight:500,borderTopLeftRadius:0,borderBottomLeftRadius:0,width:92}},onChange:n});return na.createElement(ec,{type:"number",label:e.label,placeholder:e.placeholder??"Value",defaultValue:t?.value?.toString()??"USD",icon:na.createElement(Mr,{size:14}),rightSection:s,rightSectionWidth:92,onChange:f})}import{Group as rc}from"@mantine/core";import la,{useState as ac}from"react";function Sf(e){let[o,t]=ac(e.defaultValue);function r(a){t(a),e.onChange&&e.onChange(a)}return la.createElement(rc,{spacing:"xs",grow:!0,noWrap:!0},la.createElement(Me,{name:e.name+".start",placeholder:"Start",defaultValue:o?.start,onChange:a=>r({...o,start:a})}),la.createElement(Me,{name:e.name+".end",placeholder:"End",defaultValue:o?.end,onChange:a=>r({...o,end:a})}))}import{Group as nc,NativeSelect as fc,TextInput as bf}from"@mantine/core";import Lt,{useState as lc}from"react";function De(e){let[o,t]=lc(e.defaultValue);function r(a){t(a),e.onChange&&e.onChange(a)}return Lt.createElement(nc,{spacing:"xs",grow:!0,noWrap:!0},Lt.createElement(fc,{style:{width:80},"data-testid":e.name+"-comparator",defaultValue:o?.comparator,data:["","<","<=",">=",">"],onChange:a=>r({...o,comparator:a.currentTarget.value})}),Lt.createElement(bf,{id:e.name,name:e.name,"data-autofocus":e.autoFocus,"data-testid":e.name+"-value",type:"number",placeholder:"Value",defaultValue:o?.value,autoFocus:e.autoFocus,step:"any",onWheel:a=>{e.disableWheel&&a.currentTarget.blur()},onChange:a=>{r({...o,value:sc(a.currentTarget.value)})}}),Lt.createElement(bf,{placeholder:"Unit","data-testid":e.name+"-unit",defaultValue:o?.unit,onChange:a=>r({...o,unit:a.currentTarget.value})}))}function sc(e){if(e)return parseFloat(e)}import{Group as ic}from"@mantine/core";import sa,{useState as uc}from"react";function at(e){let[o,t]=uc(e.defaultValue);function r(a){t(a),e.onChange&&e.onChange(a)}return sa.createElement(ic,{spacing:"xs",grow:!0,noWrap:!0},sa.createElement(De,{name:e.name+"-low",defaultValue:o?.low,onChange:a=>r({...o,low:a})}),sa.createElement(De,{name:e.name+"-high",defaultValue:o?.high,onChange:a=>r({...o,high:a})}))}import{Group as dc}from"@mantine/core";import ia,{useState as cc}from"react";function Pf(e){let[o,t]=cc(e.defaultValue);function r(a){t(a),e.onChange&&e.onChange(a)}return ia.createElement(dc,{spacing:"xs",grow:!0,noWrap:!0},ia.createElement(De,{name:e.name+"-numerator",defaultValue:o?.numerator,onChange:a=>r({...o,numerator:a})}),ia.createElement(De,{name:e.name+"-denominator",defaultValue:o?.denominator,onChange:a=>r({...o,denominator:a})}))}import{Group as Sc,NativeSelect as bc}from"@mantine/core";import{createReference as Pc}from"@medplum/core";import Nt,{useState as Bf}from"react";import{Group as mc,Text as Df}from"@mantine/core";import{getDisplayString as pc,getReferenceString as kf}from"@medplum/core";import fo,{forwardRef as xc,useCallback as Tf,useState as Ic}from"react";var gc={Observation:"code",User:"email:contains"},hc=["AccessPolicy","Account","ActivityDefinition","Bot","CapabilityStatement","ClientApplication","CodeSystem","CompartmentDefinition","ConceptMap","EffectEvidenceSynthesis","Endpoint","EventDefinition","Evidence","EvidenceVariable","ExampleScenario","GraphDefinition","HealthcareService","ImplementationGuide","InsurancePlan","Library","Location","Measure","MedicinalProduct","MessageDefinition","NamingSystem","OperationDefinition","Organization","Patient","Person","PlanDefinition","Practitioner","Project","Questionnaire","RelatedPerson","ResearchDefinition","ResearchElementDefinition","RiskEvidenceSynthesis","SearchParameter","StructureDefinition","StructureMap","TerminologyCapabilities","TestScript","UserConfiguration","ValueSet"];function Cc(e){return{value:kf(e),label:pc(e),resource:e}}function Rt(e){let o=S(),t=e.resourceType,[r,a]=Ic(),n=X(e.defaultValue,a),f=e.onChange,s=Tf(async(i,u)=>{let d=vc(t),c=new URLSearchParams({[d]:i,_count:"10"});return await o.searchResources(t,c,{signal:u})},[o,t]),l=Tf(i=>{f&&f(i[0])},[f]);return e.defaultValue&&!r&&!n?null:fo.createElement(So,{name:e.name,itemComponent:yc,defaultValue:n,placeholder:e.placeholder,maxSelectedValues:1,toKey:kf,toOption:Cc,loadOptions:s,onChange:l,clearable:!0})}var yc=xc(({label:e,resource:o,...t},r)=>fo.createElement("div",{ref:r,...t},fo.createElement(mc,{noWrap:!0},fo.createElement(Ce,{value:o}),fo.createElement("div",null,fo.createElement(Df,null,e),fo.createElement(Df,{size:"xs",color:"dimmed"},o.birthDate)))));function vc(e){return gc[e]??(hc.includes(e)?"name":"_id")}function Ao(e){let o=Dc(e.targetTypes),t=Tc(e.defaultValue,o),[r,a]=Bf(e.defaultValue),[n,f]=Bf(t);function s(l){a(l),e.onChange&&e.onChange(l)}return Nt.createElement(Sc,{spacing:"xs",grow:!0,noWrap:!0},o&&o.length>1&&Nt.createElement(bc,{"data-autofocus":e.autoFocus,"data-testid":"reference-input-resource-type-select",defaultValue:n,autoFocus:e.autoFocus,onChange:l=>f(l.currentTarget.value),data:o}),!o&&Nt.createElement(bo,{autoFocus:e.autoFocus,testId:"reference-input-resource-type-input",defaultValue:n,onChange:f,name:e.name+"-resourceType",placeholder:"Resource Type"}),Nt.createElement(Rt,{resourceType:n,name:e.name+"-id",placeholder:e.placeholder,defaultValue:r,onChange:l=>{s(l?Pc(l):void 0)}}))}function Dc(e){if(!(!e||e.length===0||e.length===1&&e[0]==="Resource"))return e}function Tc(e,o){let t=e?.reference?.split("/")[0];if(t)return t;if(o&&o.length>0)return o[0]}import{ActionIcon as Af}from"@mantine/core";import Ie,{useRef as kc,useState as Bc}from"react";function Mf(e){let[o,t]=Bc(e.defaultValue&&Array.isArray(e.defaultValue)?e.defaultValue:[]),r=kc();r.current=o;function a(n){t(n),e.onChange&&e.onChange(n)}return Ie.createElement("table",{style:{width:"100%",borderCollapse:"collapse"}},Ie.createElement("colgroup",null,Ie.createElement("col",{width:"97%"}),Ie.createElement("col",{width:"3%"})),Ie.createElement("tbody",null,o.map((n,f)=>Ie.createElement("tr",{key:`${f}-${o.length}`},Ie.createElement("td",null,Ie.createElement(He,{arrayElement:!0,property:e.property,name:e.name+"."+f,defaultValue:n,onChange:s=>{let l=[...r.current];l[f]=s,a(l)}})),Ie.createElement("td",{style:{textAlign:"right"}},Ie.createElement(Af,{title:"Remove",size:"sm",onClick:s=>{V(s);let l=[...r.current];l.splice(f,1),a(l)}},Ie.createElement(ze,null))))),Ie.createElement("tr",null,Ie.createElement("td",null),Ie.createElement("td",{style:{textAlign:"right"}},Ie.createElement(Af,{title:"Add",size:"sm",color:"green",onClick:n=>{V(n);let f=[...r.current];f.push(void 0),a(f)}},Ie.createElement(po,null))))))}import{Button as Of,Chip as Ff,Group as Ht,Modal as Ac,NativeSelect as Mc,Stack as Fc,Switch as wc,TextInput as Oc}from"@mantine/core";import{formatTiming as Ec}from"@medplum/core";import K,{useRef as Ef,useState as ua}from"react";var Lc=["sun","mon","tue","wed","thu","fri","sat"];function Lf(e){let[o,t]=ua(e.defaultValue),[r,a]=ua(!1),n=Ef();return n.current=o,K.createElement(K.Fragment,null,K.createElement(Ht,{spacing:"xs",grow:!0,noWrap:!0},K.createElement("span",null,Ec(n.current)||"No repeat"),K.createElement(Of,{onClick:()=>a(!0)},"Edit")),K.createElement(Rc,{visible:r,defaultValue:n.current,onOk:f=>{e.onChange&&e.onChange(f),t(f),a(!1)},onCancel:()=>a(!1)}))}var wf={repeat:{period:1,periodUnit:"d"}};function Rc(e){let[o,t]=ua(e.defaultValue||wf),r=Ef();r.current=o;function a(i){t({...r.current,event:[i]})}function n(i){t({...r.current,repeat:i})}function f(i){n({...r.current?.repeat,period:i})}function s(i){n({...r.current?.repeat,periodUnit:i})}function l(i){n({...r.current?.repeat,dayOfWeek:i})}return K.createElement(Ac,{title:"Timing",closeButtonProps:{"aria-label":"Close"},opened:e.visible,onClose:()=>e.onCancel()},K.createElement(Fc,null,K.createElement(be,{title:"Starts on",htmlFor:"timing-dialog-start"},K.createElement(Me,{name:"timing-dialog-start",onChange:i=>a(i)})),K.createElement(wc,{label:"Repeat",checked:!!o.repeat,onChange:i=>n(i.currentTarget.checked?wf.repeat:void 0)}),o.repeat&&K.createElement(K.Fragment,null,K.createElement(be,{title:"Repeat every",htmlFor:"timing-dialog-period"},K.createElement(Ht,{spacing:"xs",grow:!0,noWrap:!0},K.createElement(Oc,{type:"number",step:1,id:"timing-dialog-period",name:"timing-dialog-period",defaultValue:o.repeat.period||1,onChange:i=>f(parseInt(i.currentTarget.value,10)||1)}),K.createElement(Mc,{id:"timing-dialog-periodUnit",name:"timing-dialog-periodUnit",defaultValue:o.repeat.periodUnit,onChange:i=>s(i.currentTarget.value),data:[{label:"second",value:"s"},{label:"minute",value:"min"},{label:"hour",value:"h"},{label:"day",value:"d"},{label:"week",value:"wk"},{label:"month",value:"mo"},{label:"year",value:"a"}]}))),o.repeat.periodUnit==="wk"&&K.createElement(be,{title:"Repeat on"},K.createElement(Ff.Group,{multiple:!0,onChange:l},K.createElement(Ht,{position:"apart",mt:"md",spacing:"xs"},Lc.map(i=>K.createElement(Ff,{key:i,value:i,size:"xs",radius:"xl"},i.charAt(0).toUpperCase())))))),K.createElement(Ht,{position:"right"},K.createElement(Of,{onClick:()=>e.onOk(o)},"OK"))))}function He(e){let o=e.property,t=e.defaultPropertyType??o.type[0].code,r=e.name,a=e.defaultValue;if(o.max>1&&!e.arrayElement)return t===R.Attachment?U.createElement(Wn,{name:r,defaultValue:a,onChange:e.onChange}):U.createElement(Mf,{property:o,name:r,defaultValue:a,onChange:e.onChange});let n=o.type;return n.length>1?U.createElement(Qc,{elementDefinitionTypes:n,...e}):U.createElement(Rf,{elementDefinitionType:n[0],...e})}function Qc(e){let o=e.elementDefinitionTypes,t;e.defaultPropertyType&&(t=o.find(n=>n.code===e.defaultPropertyType)),t||(t=o[0]);let[r,a]=Uc(t);return U.createElement(Hc,{spacing:"xs",grow:!0,noWrap:!0},U.createElement(Vc,{style:{width:"200px"},defaultValue:r.code,onChange:n=>{a(o.find(f=>f.code===n.currentTarget.value))},data:o.map(n=>({value:n.code,label:n.code}))}),U.createElement(Rf,{...e,elementDefinitionType:r,onChange:n=>{e.onChange&&e.onChange(n,e.name.replace("[x]",Gc(r.code)))}}))}function Rf(e){let o=e.property,t=e.elementDefinitionType.code,r=e.name,a=e.defaultValue,n=o.min!==void 0&&o.min>0;switch(t){case R.SystemString:case R.canonical:case R.string:case R.time:case R.uri:case R.url:return U.createElement(da,{id:r,name:r,"data-testid":r,defaultValue:a,required:n,onChange:f=>{e.onChange&&e.onChange(f.currentTarget.value)},error:xe(e.outcome,r)});case R.date:return U.createElement(da,{type:"date",id:r,name:r,"data-testid":r,defaultValue:a,required:n,onChange:f=>{e.onChange&&e.onChange(f.currentTarget.value)},error:xe(e.outcome,r)});case R.dateTime:case R.instant:return U.createElement(Me,{name:r,defaultValue:a,onChange:e.onChange,outcome:e.outcome});case R.decimal:case R.integer:case R.positiveInt:case R.unsignedInt:return U.createElement(da,{type:"number",step:t===R.decimal?"any":"1",id:r,name:r,"data-testid":r,defaultValue:a,required:n,onChange:f=>{e.onChange&&e.onChange(f.currentTarget.valueAsNumber)}});case R.code:return U.createElement(bt,{binding:o.binding?.valueSet,name:r,defaultValue:a,onChange:e.onChange});case R.boolean:return U.createElement(Nc,{id:r,name:r,"data-testid":r,defaultChecked:!!a,onChange:f=>{e.onChange&&e.onChange(f.currentTarget.checked)}});case R.markdown:return U.createElement(qc,{id:r,name:r,"data-testid":r,defaultValue:a,required:n,onChange:f=>{e.onChange&&e.onChange(f.currentTarget.value)}});case R.Address:return U.createElement(dn,{name:r,defaultValue:a,onChange:e.onChange});case R.Annotation:return U.createElement(pn,{name:r,defaultValue:a,onChange:e.onChange});case R.Attachment:return U.createElement(Pt,{name:r,defaultValue:a,onChange:e.onChange});case R.CodeableConcept:return U.createElement(cf,{binding:o.binding?.valueSet,name:r,defaultValue:a,onChange:e.onChange});case R.Coding:return U.createElement(mf,{binding:o.binding?.valueSet,name:r,defaultValue:a,onChange:e.onChange});case R.ContactDetail:return U.createElement(xf,{name:r,defaultValue:a,onChange:e.onChange});case R.ContactPoint:return U.createElement(Ot,{name:r,defaultValue:a,onChange:e.onChange});case R.Extension:return U.createElement(gf,{name:r,defaultValue:a,onChange:e.onChange});case R.HumanName:return U.createElement(hf,{name:r,defaultValue:a,onChange:e.onChange});case R.Identifier:return U.createElement(yf,{name:r,defaultValue:a,onChange:e.onChange});case R.Money:return U.createElement(vf,{name:r,defaultValue:a,onChange:e.onChange});case R.Period:return U.createElement(Sf,{name:r,defaultValue:a,onChange:e.onChange});case R.Duration:case R.Quantity:return U.createElement(De,{name:r,defaultValue:a,onChange:e.onChange});case R.Range:return U.createElement(at,{name:r,defaultValue:a,onChange:e.onChange});case R.Ratio:return U.createElement(Pf,{name:r,defaultValue:a,onChange:e.onChange});case R.Reference:return U.createElement(Ao,{name:r,defaultValue:a,targetTypes:zc(o),onChange:e.onChange});case R.Timing:return U.createElement(Lf,{name:r,defaultValue:a,onChange:e.onChange});case R.Dosage:case R.UsageContext:return U.createElement(rt,{typeName:t,defaultValue:a,onChange:e.onChange,outcome:e.outcome});default:return U.createElement(rt,{typeName:o.type[0].code,defaultValue:a,onChange:e.onChange,outcome:e.outcome})}}function zc(e){return e?.type?.[0]?.targetProfile?.map(o=>o.split("/").pop())}function rt(e){let[o,t]=Jc(e.defaultValue??{});function r(s){t(s),e.onChange&&e.onChange(s)}let a=e.typeName,n=Xc(a);if(!n)return Mo.createElement("div",null,a,"\xA0not implemented");let f={type:a,value:o};return Mo.createElement(Wc,null,Object.entries(n.elements).map(([s,l])=>{if(s==="id"||Dt.includes(s)||!l.type)return null;let[i,u]=Se(f,s),d=l.min!==void 0&&l.min>0;return l.type.length===1&&l.type[0].code==="boolean"?Mo.createElement(Mt,{key:s,title:Nf(s),description:l.description,htmlFor:s},Mo.createElement(He,{property:l,name:s,defaultValue:i,defaultPropertyType:u,outcome:e.outcome,onChange:(c,g)=>{r(tt(o,s,g??s,l,c))}})):Mo.createElement(be,{key:s,title:Nf(s),description:l.description,withAsterisk:d,htmlFor:s,outcome:e.outcome},Mo.createElement(He,{property:l,name:s,defaultValue:i,defaultPropertyType:u,onChange:(c,g)=>{r(tt(o,s,g??s,l,c))}}))}))}import{Button as ca,createStyles as $c,Group as Hf}from"@mantine/core";import te,{useMemo as Kc,useState as jc}from"react";var _c=$c(e=>({table:{width:350,"& th":{fontWeight:"normal",fontSize:11,padding:8,textAlign:"center"},"& td":{padding:"2px 4px"},"& td button":{width:44,height:44,color:e.colors[e.primaryColor][5],fontSize:16,fontWeight:500,textAlign:"center",padding:0,backgroundColor:e.colors[e.primaryColor][0],border:0,borderRadius:"50%",cursor:"pointer"},"& td button:hover":{backgroundColor:e.colors[e.primaryColor][1]},"& td button:disabled":{backgroundColor:"transparent",cursor:"default",color:e.colors.gray[4],fontWeight:"normal"}}}));function Zc(e){return e.toLocaleString("default",{month:"long"})+" "+e.getFullYear()}function Vf(e){let{classes:o}=_c(),{onChangeMonth:t,onClick:r}=e,[a,n]=jc(ma);function f(l){n(i=>{let u=new Date(i.getTime());return u.setMonth(i.getMonth()+l),t(u),u})}let s=Kc(()=>Yc(a,e.slots),[a,e.slots]);return te.createElement("div",null,te.createElement(Hf,{position:"apart",spacing:"xs",grow:!0,noWrap:!0},te.createElement("p",{style:{flex:1}},Zc(a)),te.createElement(Hf,{position:"right",spacing:"xs"},te.createElement(ca,{variant:"outline","aria-label":"Previous month",onClick:()=>f(-1)},"<"),te.createElement(ca,{variant:"outline","aria-label":"Next month",onClick:()=>f(1)},">"))),te.createElement("table",{className:o.table},te.createElement("thead",null,te.createElement("tr",null,te.createElement("th",null,"SUN"),te.createElement("th",null,"MON"),te.createElement("th",null,"TUE"),te.createElement("th",null,"WED"),te.createElement("th",null,"THU"),te.createElement("th",null,"FRI"),te.createElement("th",null,"SAT"))),te.createElement("tbody",null,s.map((l,i)=>te.createElement("tr",{key:"week-"+i},l.map((u,d)=>te.createElement("td",{key:"day-"+d},u&&te.createElement(ca,{disabled:!u.available,onClick:()=>r(u.date)},u.date.getDate()))))))))}function ma(){let e=new Date;return e.setDate(1),e.setHours(0,0,0,0),e}function Yc(e,o){let t=new Date(e.getFullYear(),e.getMonth()),r=[],a=[];for(let n=0;n<t.getDay();n++)a.push(void 0);for(;t.getMonth()===e.getMonth();)a.push({date:new Date(t.getTime()),available:em(t,o)}),t.getDay()===6&&(r.push(a),a=[]),t.setDate(t.getDate()+1);if(t.getDay()!==0){for(let n=t.getDay();n<7;n++)a.push(void 0);r.push(a)}return r}function em(e,o){for(let t of o){let r=new Date(t.start);if(r.getFullYear()===e.getFullYear()&&r.getMonth()===e.getMonth()&&r.getDate()===e.getDate())return!0}return!1}import{Container as om,createStyles as tm}from"@mantine/core";import rm from"react";var am=tm(()=>({root:{"@media (max-width: 800px)":{paddingLeft:4,paddingRight:4}}}));function Ke(e){let{children:o,...t}=e,{classes:r}=am();return rm.createElement(om,{className:r.root,...t},o)}import pp from"react";import{ActionIcon as rl,Center as _m,createStyles as Zm,Group as Ym,Loader as ep,Menu as Ve,ScrollArea as op,TextInput as tp}from"@mantine/core";import{showNotification as rp,updateNotification as ya}from"@mantine/notifications";import{getReferenceString as nt,normalizeErrorString as ap}from"@medplum/core";import k,{useCallback as Gt,useEffect as np,useRef as al,useState as nl}from"react";import{createStyles as hm,Group as qt,List as Uf,Stack as Qf,Text as Te,Title as zf}from"@mantine/core";import{capitalize as Cm,formatCodeableConcept as ym,formatDateTime as Ia,formatObservationValue as vm,isReference as Sm}from"@medplum/core";import I,{useEffect as bm,useState as Pm}from"react";import{Blockquote as nm,createStyles as fm,Stack as lm}from"@mantine/core";import qf from"react";var sm=fm(e=>({noteBody:{fontSize:e.fontSizes.sm},noteCite:{fontSize:e.fontSizes.xs,marginBlockStart:3},noteRoot:{padding:5}}));function pa({value:e}){let{classes:o}=sm();return e?qf.createElement(lm,{justify:"flex-start",spacing:"xs"},e.map(t=>t.text&&qf.createElement(nm,{key:`note-${t.text}`,classNames:{cite:o.noteCite,body:o.noteBody,root:o.noteRoot},cite:t.authorReference?.display||t.authorString,icon:null},t.text))):null}import{Group as pm}from"@mantine/core";import xa from"react";import{Text as im}from"@mantine/core";import{getDisplayString as um,isOk as dm,normalizeErrorString as cm}from"@medplum/core";import Gf,{useState as mm}from"react";function Le(e){let{value:o,link:t,...r}=e,[a,n]=mm(),f=X(o,n),s;if(a&&!dm(a))s=`[${cm(a)}]`;else if(f)s=um(f);else return null;return t?Gf.createElement(se,{to:o,...r},s):Gf.createElement(im,{component:"span",...r},s)}function je(e){return xa.createElement(pm,{spacing:"xs"},xa.createElement(Ce,{size:24,radius:12,value:e.value,link:e.link}),xa.createElement(Le,{value:e.value,link:e.link}))}import{Badge as xm}from"@mantine/core";import Im from"react";var gm={draft:"blue",active:"blue","on-hold":"yellow",revoked:"red",completed:"green","entered-in-error":"red",unknown:"gray",retired:"gray",registered:"blue",preliminary:"blue",final:"green",amended:"yellow",corrected:"yellow",cancelled:"red",requested:"blue",received:"blue",accepted:"blue",rejected:"red",ready:"blue","in-progress":"blue",failed:"red",proposed:"blue",pending:"blue",booked:"blue",arrived:"blue",fulfilled:"green",noshow:"red","checked-in":"blue",waitlist:"gray",routine:"gray",urgent:"red",asap:"red",stat:"red"};function Vt(e){return Im.createElement(xm,{color:gm[e.status]},e.status)}var Wf=hm(e=>({table:{border:`0.1px solid ${e.colors.gray[5]}`,borderCollapse:"collapse","& td, & th":{border:`0.1px solid ${e.colors.gray[5]}`,padding:4}},criticalRow:{background:e.colorScheme==="dark"?e.colors.red[7]:e.colors.red[1],border:`0.1px solid ${e.colors.red[5]}`,color:e.colors.red[5],fontWeight:500,"& td":{border:`0.1px solid ${e.colors.red[5]}`}},noteBody:{fontSize:e.fontSizes.sm},noteCite:{fontSize:e.fontSizes.xs,marginBlockStart:3},noteRoot:{padding:5}}));ga.defaultProps={hideObservationNotes:!1,hideSpecimenInfo:!1};function ga(e){let o=S(),t=X(e.value),[r,a]=Pm();if(bm(()=>{t?.specimen&&Promise.allSettled(t.specimen.map(f=>o.readReference(f))).then(f=>f.filter(s=>s.status==="fulfilled").map(s=>s.value)).then(a).catch(console.error)},[o,t]),!t)return null;let n=r?.flatMap(f=>f.note||[])||[];if(t.presentedForm&&t.presentedForm.length>0){let f=t.presentedForm[0];f.contentType?.startsWith("text/plain")&&f.data&&n.push({text:window.atob(f.data)})}return I.createElement(Qf,null,I.createElement(zf,null,"Diagnostic Report"),I.createElement(Dm,{value:t}),r&&!e.hideSpecimenInfo&&Tm(r),t.result&&I.createElement(km,{hideObservationNotes:e.hideObservationNotes,value:t.result}),n.length>0&&I.createElement(pa,{value:n}))}function Dm({value:e}){return I.createElement(qt,{mt:"md",spacing:30},e.subject&&I.createElement("div",null,I.createElement(Te,{size:"xs",transform:"uppercase",color:"dimmed"},"Subject"),I.createElement(Te,null,I.createElement(je,{value:e.subject,link:!0}))),e.resultsInterpreter?.map(o=>I.createElement("div",{key:o.reference},I.createElement(Te,{size:"xs",transform:"uppercase",color:"dimmed"},"Interpreter"),I.createElement(Te,null,I.createElement(je,{value:o,link:!0})))),e.performer?.map(o=>I.createElement("div",{key:o.reference},I.createElement(Te,{size:"xs",transform:"uppercase",color:"dimmed"},"Performer"),I.createElement(Te,null,I.createElement(je,{value:o,link:!0})))),e.issued&&I.createElement("div",null,I.createElement(Te,{size:"xs",transform:"uppercase",color:"dimmed"},"Issued"),I.createElement(Te,null,Ia(e.issued))),e.status&&I.createElement("div",null,I.createElement(Te,{size:"xs",transform:"uppercase",color:"dimmed"},"Status"),I.createElement(Te,null,Cm(e.status))))}function Tm(e){return I.createElement(Qf,{spacing:"xs"},I.createElement(zf,{order:2,size:"h6"},"Specimens"),I.createElement(Uf,{type:"ordered"},e?.map(o=>I.createElement(Uf.Item,{ml:"sm",key:`specimen-${o.id}`},I.createElement(qt,{spacing:20},I.createElement(qt,{spacing:5},I.createElement(Te,{fw:500},"Collected:")," ",Ia(o.collection?.collectedDateTime)),I.createElement(qt,{spacing:5},I.createElement(Te,{fw:500},"Received:")," ",Ia(o.receivedTime)))))))}function km(e){let{classes:o}=Wf();return I.createElement("table",{className:o.table},I.createElement("thead",null,I.createElement("tr",null,I.createElement("th",null,"Test"),I.createElement("th",null,"Value"),I.createElement("th",null,"Reference Range"),I.createElement("th",null,"Interpretation"),I.createElement("th",null,"Category"),I.createElement("th",null,"Performer"),I.createElement("th",null,"Status"))),I.createElement("tbody",null,I.createElement(Xf,{value:e.value,hideObservationNotes:e.hideObservationNotes})))}function Xf(e){return I.createElement(I.Fragment,null,e.value?.map(o=>I.createElement(Bm,{key:`obs-${Sm(o)?o.reference:o.id}`,hideObservationNotes:e.hideObservationNotes,value:o})))}function Bm(e){let{classes:o,cx:t}=Wf(),r=X(e.value);if(!r)return null;let a=!e.hideObservationNotes&&r.note,n=Fm(r);return I.createElement(I.Fragment,null,I.createElement("tr",{className:t({[o.criticalRow]:n})},I.createElement("td",{rowSpan:a?2:1},I.createElement(se,{to:r},I.createElement(To,{value:r.code}))),I.createElement("td",null,I.createElement(Am,{value:r})),I.createElement("td",null,I.createElement(Mm,{value:r.referenceRange})),I.createElement("td",null,r.interpretation&&r.interpretation.length>0&&I.createElement(To,{value:r.interpretation[0]})),I.createElement("td",null,r.category&&r.category.length>0&&I.createElement(I.Fragment,null,r.category.map(f=>I.createElement("div",{key:`category-${ym(f)}`},I.createElement(To,{value:f}))))),I.createElement("td",null,r.performer?.map(f=>I.createElement(no,{key:f.reference,value:f}))),I.createElement("td",null,r.status&&I.createElement(Vt,{status:r.status}))),r.hasMember&&I.createElement(Xf,{value:r.hasMember,hideObservationNotes:e.hideObservationNotes}),a&&I.createElement("tr",null,I.createElement("td",{colSpan:6},I.createElement(pa,{value:r.note}))))}function Am(e){let o=e.value;return I.createElement(I.Fragment,null,vm(o))}function Mm(e){let o=e.value&&e.value.length>0&&e.value[0];return o?o.text?I.createElement(I.Fragment,null,o.text):I.createElement(kt,{value:o}):null}function Fm(e){let o=e.interpretation?.[0]?.coding?.[0]?.code;return o==="AA"||o==="LL"||o==="HH"||o==="A"}import{createStyles as wm,Paper as Om,useComponentDefaultProps as Em}from"@mantine/core";import Lm from"react";var Rm=wm((e,{width:o,fill:t})=>({paper:{maxWidth:o,margin:`${e.spacing.xl} auto`,padding:t?0:e.spacing.md,"@media (max-width: 800px)":{padding:t?0:8},"& img":{width:"100%",maxWidth:"100%"},"& video":{width:"100%",maxWidth:"100%"}}})),Nm={shadow:"xs",radius:"md",withBorder:!0};function Fo(e){let{className:o,children:t,width:r,fill:a,unstyled:n,...f}=Em("Panel",Nm,e),{classes:s,cx:l}=Rm({width:r,fill:a},{name:"Panel",unstyled:n});return Lm.createElement(Om,{className:l(s.paper,o),...f},t)}import{createStyles as Hm}from"@mantine/core";import{getDataType as Vm,getPropertyDisplayName as qm,stringify as Jf,toTypedValue as $f}from"@medplum/core";import ue,{useEffect as Gm,useState as Um}from"react";var Qm=Hm(e=>({root:{borderCollapse:"collapse",width:"100%","& tr":{borderTop:`0.1px solid ${e.colors.gray[3]}`},"& th, & td":{padding:`${e.spacing.sm} ${e.spacing.sm}`,verticalAlign:"top"}},removed:{color:e.colors.red[7],textDecoration:"line-through"},added:{color:e.colors.green[7]}}));function jf(e){let{classes:o}=Qm(),t=S(),[r,a]=Um(!1);if(Gm(()=>{t.requestSchema(e.original.resourceType).then(()=>a(!0)).catch(console.log)},[t,e.original.resourceType]),!r)return null;let n=Vm(e.original.resourceType);return ue.createElement("table",{className:o.root},ue.createElement("colgroup",null,ue.createElement("col",{style:{width:"30%"}}),ue.createElement("col",{style:{width:"35%"}}),ue.createElement("col",{style:{width:"35%"}})),ue.createElement("thead",null,ue.createElement("tr",null,ue.createElement("th",null,"Property"),ue.createElement("th",null,"Before"),ue.createElement("th",null,"After"))),ue.createElement("tbody",null,Object.entries(n.elements).map(([f,s])=>{if(f==="id"||f==="meta")return null;let[l,i]=Se($f(e.original),f),[u,d]=Se($f(e.revised),f);return Kf(l)&&Kf(u)||Jf(l)===Jf(u)?null:ue.createElement("tr",{key:f},ue.createElement("td",null,qm(f)),ue.createElement("td",{className:o.removed},ue.createElement(pe,{property:s,propertyType:i,value:l,ignoreMissingValues:!0})),ue.createElement("td",{className:o.added},ue.createElement(pe,{property:s,propertyType:d,value:u,ignoreMissingValues:!0})))})))}function Kf(e){return!e||Array.isArray(e)&&e.length===0||typeof e=="object"&&Object.keys(e).length===0}import zm,{useEffect as Wm,useState as Xm}from"react";function ha(e){let o=S(),t=X(e.value),[r,a]=Xm(!1);return Wm(()=>{t&&o.requestSchema(t.resourceType).then(()=>a(!0)).catch(console.log)},[o,t]),!r||!t?null:zm.createElement(et,{value:{type:t.resourceType,value:e.forceUseInput?e.value:t},ignoreMissingValues:e.ignoreMissingValues})}import{ActionIcon as Jm,Group as $m,Menu as _f,Text as Ca}from"@mantine/core";import{formatDateTime as Km,getReferenceString as jm}from"@medplum/core";import re from"react";function Zf(e){return re.createElement(Ke,null,e.children)}function _e(e){let{resource:o,profile:t,padding:r,popupMenuItems:a,...n}=e,f=t??o.meta?.author,s=e.dateTime??o.meta?.lastUpdated;return re.createElement(Fo,{"data-testid":"timeline-item",fill:!0,...n},re.createElement($m,{position:"apart",spacing:8,mx:"xs",my:"sm"},re.createElement(Ce,{value:f,link:!0,size:"md"}),re.createElement("div",{style:{flex:1}},re.createElement(Ca,{size:"sm"},re.createElement(Le,{color:"dark",weight:500,value:f,link:!0})),re.createElement(Ca,{size:"xs"},re.createElement(se,{color:"dimmed",to:e.resource},Km(s)),re.createElement(Ca,{component:"span",color:"dimmed",mx:8},"\xB7"),re.createElement(se,{color:"dimmed",to:e.resource},e.resource.resourceType))),a&&re.createElement(_f,{position:"bottom-end",shadow:"md",width:200},re.createElement(_f.Target,null,re.createElement(Jm,{radius:"xl","aria-label":`Actions for ${jm(e.resource)}`},re.createElement(Fr,null))),a)),re.createElement(ho,null,r&&re.createElement("div",{style:{padding:"0 16px 16px 16px"}},e.children),!r&&re.createElement(re.Fragment,null,e.children)))}function ol(e,o){e.sort((t,r)=>{let a=Yf(t,o),n=Yf(r,o);return a>n?1:a<n?-1:el(t,o)-el(r,o)})}function Yf(e,o){if(!tl(e,o)){let t=e.priority;if(typeof t=="string")return{stat:4,asap:3,urgent:2}[t]??0}return 0}function el(e,o){if(!tl(e,o)){if(e.resourceType==="Communication"&&e.sent)return new Date(e.sent).getTime();if((e.resourceType==="DiagnosticReport"||e.resourceType==="Media"||e.resourceType==="Observation")&&e.issued)return new Date(e.issued).getTime();if(e.resourceType==="DocumentReference"&&e.date)return new Date(e.date).getTime()}let t=e.meta?.lastUpdated;return t?new Date(t).getTime():0}function tl(e,o){return!!o&&e.resourceType===o.resourceType&&e.id===o.id}var fp=Zm(e=>({pinnedComment:{backgroundColor:e.colors.blue[0]}}));function Ze(e){let o=S(),t=Qe(),r=o.getProfile(),a=al(null),n=X(e.value),[f,s]=nl(),[l,i]=nl([]),u=e.loadTimelineResources,d=al(l);d.current=l;let c=Gt(C=>{ol(C,n),C.reverse(),i(C)},[n]),g=Gt(C=>{let H=[];for(let Be of C){if(Be.status!=="fulfilled")continue;let he=Be.value;if(he.type==="history"&&s(he),he.entry)for(let oo of he.entry)H.push(oo.resource)}c(H)},[c]),y=Gt(C=>c([...d.current,C]),[c]),A=Gt(()=>{let C,H;"resourceType"in e.value?(C=e.value.resourceType,H=e.value.id):[C,H]=e.value.reference?.split("/"),u(o,C,H).then(g).catch(console.log)},[o,e.value,u,g]);np(()=>A(),[A]);function v(C){!n||!e.createCommunication||o.createResource(e.createCommunication(n,r,C)).then(H=>y(H)).catch(console.log)}function D(C){!n||!e.createMedia||o.createResource(e.createMedia(n,r,C)).then(H=>y(H)).then(()=>ya({id:"upload-notification",color:"teal",title:"Upload complete",message:"",icon:k.createElement(Xo,{size:16}),autoClose:2e3})).catch(H=>ya({id:"upload-notification",color:"red",title:"Upload error",message:ap(H),icon:k.createElement(Or,{size:16}),autoClose:2e3}))}function B(C,H){return o.updateResource({...C,priority:H})}function x(C){B(C,"stat").then(A).catch(console.log)}function O(C){B(C,"routine").then(A).catch(console.log)}function h(C){t(`/${C.resourceType}/${C.id}`)}function F(C){t(`/${C.resourceType}/${C.id}/edit`)}function _(C){t(`/${C.resourceType}/${C.id}/delete`)}function Pe(C){t(`/${C.resourceType}/${C.id}/_history/${C.meta?.versionId}`)}function fe(){rp({id:"upload-notification",loading:!0,title:"Initializing upload...",message:"Please wait...",autoClose:!1,withCloseButton:!1})}function Go(C){ya({id:"upload-notification",loading:!0,title:"Uploading...",message:mp(C),autoClose:!1,withCloseButton:!1})}return n?k.createElement(Zf,null,e.createCommunication&&k.createElement(Fo,null,k.createElement($,{testid:"timeline-form",onSubmit:C=>{v(C.text);let H=a.current;H&&(H.value="",H.focus())}},k.createElement(Ym,{spacing:"xs",noWrap:!0,style:{width:"100%"}},k.createElement(Ce,{value:r}),k.createElement(tp,{name:"text",ref:a,placeholder:"Add comment",style:{width:"100%",maxWidth:300}}),k.createElement(rl,{type:"submit",radius:"xl",color:"blue",variant:"filled"},k.createElement(Hr,{size:16})),k.createElement(Po,{onUpload:D,onUploadStart:fe,onUploadProgress:Go},C=>k.createElement(rl,{...C,radius:"xl",color:"blue",variant:"filled"},k.createElement(Jo,{size:16})))))),l.map(C=>{if(!C)return null;let H=`${C.resourceType}/${C.id}/${C.meta?.versionId}`;if(C.resourceType===n.resourceType&&C.id===n.id)return k.createElement(lp,{key:H,history:f,resource:C,onDetails:Pe});switch(C.resourceType){case"AuditEvent":return k.createElement(dp,{key:H,resource:C,onDetails:h});case"Communication":return k.createElement(ip,{key:H,resource:C,onPin:C.priority!=="stat"?x:void 0,onUnpin:C.priority==="stat"?O:void 0,onDetails:h,onEdit:F,onDelete:_});case"DiagnosticReport":return k.createElement(cp,{key:H,resource:C,onDetails:h,onEdit:F,onDelete:_});case"Media":return k.createElement(up,{key:H,resource:C,onDetails:h,onEdit:F,onDelete:_});default:return k.createElement(_e,{key:H,resource:C,padding:!0},k.createElement(ha,{value:C,ignoreMissingValues:!0}))}})):k.createElement(_m,{style:{width:"100%",height:"100%"}},k.createElement(ep,null))}function wo(e){return k.createElement(Ve.Dropdown,null,k.createElement(Ve.Label,null,"Resource"),e.onPin&&k.createElement(Ve.Item,{icon:k.createElement(Vr,{size:14}),onClick:()=>e.onPin(e.resource),"aria-label":`Pin ${nt(e.resource)}`},"Pin"),e.onUnpin&&k.createElement(Ve.Item,{icon:k.createElement(qr,{size:14}),onClick:()=>e.onUnpin(e.resource),"aria-label":`Unpin ${nt(e.resource)}`},"Unpin"),e.onDetails&&k.createElement(Ve.Item,{icon:k.createElement(Rr,{size:14}),onClick:()=>e.onDetails(e.resource),"aria-label":`Details ${nt(e.resource)}`},"Details"),e.onEdit&&k.createElement(Ve.Item,{icon:k.createElement(wr,{size:14}),onClick:()=>e.onEdit(e.resource),"aria-label":`Edit ${nt(e.resource)}`},"Edit"),e.onDelete&&k.createElement(k.Fragment,null,k.createElement(Ve.Divider,null),k.createElement(Ve.Label,null,"Danger zone"),k.createElement(Ve.Item,{color:"red",icon:k.createElement(jo,{size:14}),onClick:()=>e.onDelete(e.resource),"aria-label":`Delete ${nt(e.resource)}`},"Delete")))}function lp(e){let o=sp(e.history,e.resource);return o?k.createElement(_e,{resource:e.resource,padding:!0,popupMenuItems:k.createElement(wo,{...e})},k.createElement(jf,{original:o,revised:e.resource})):k.createElement(_e,{resource:e.resource,padding:!0,popupMenuItems:k.createElement(wo,{...e})},k.createElement("h3",null,"Created"),k.createElement(ha,{value:e.resource,ignoreMissingValues:!0,forceUseInput:!0}))}function sp(e,o){let t=e.entry,r=t.findIndex(a=>a.resource?.meta?.versionId===o.meta?.versionId);if(!(r>=t.length-1))return t[r+1].resource}function ip(e){let{classes:o}=fp(),r=!e.resource.priority||e.resource.priority==="routine"?void 0:o.pinnedComment;return k.createElement(_e,{resource:e.resource,profile:e.resource.sender,dateTime:e.resource.sent,padding:!0,className:r,popupMenuItems:k.createElement(wo,{...e})},k.createElement("p",null,e.resource.payload?.[0]?.contentString))}function up(e){let o=e.resource.content?.contentType,t=o&&!o.startsWith("image/")&&!o.startsWith("video/")&&o!=="application/pdf";return k.createElement(_e,{resource:e.resource,padding:!!t,popupMenuItems:k.createElement(wo,{...e})},k.createElement(Ee,{value:e.resource.content}))}function dp(e){return k.createElement(_e,{resource:e.resource,padding:!0,popupMenuItems:k.createElement(wo,{...e})},k.createElement(op,null,k.createElement("pre",null,e.resource.outcomeDesc)))}function cp(e){return k.createElement(_e,{resource:e.resource,padding:!0,popupMenuItems:k.createElement(wo,{...e})},k.createElement(ga,{value:e.resource}))}function mp(e){if(e.lengthComputable){let o=100*e.loaded/e.total;return`Uploaded: ${va(e.loaded)} / ${va(e.total)} ${o.toFixed(2)}%`}return`Uploaded: ${va(e.loaded)}`}function va(e){if(e===0)return"0.00 B";let o=Math.floor(Math.log(e)/Math.log(1024));return(e/Math.pow(1024,o)).toFixed(2)+" "+" KMGTP".charAt(o)+"B"}function IA(e){return pp.createElement(Ze,{value:e.resource,loadTimelineResources:async(o,t,r)=>{let a=`${t}/${r}`,n=100;return Promise.allSettled([o.readHistory(t,r),o.search("Task",{_filter:`based-on eq ${a} or focus eq ${a} or subject eq ${a}`,_count:n})])}})}import fl from"react";function Ut(e){let{children:o,...t}=e;return fl.createElement(Ke,null,fl.createElement(Fo,{...t},o))}import{createReference as Qt}from"@medplum/core";import xp from"react";function BA(e){return xp.createElement(Ze,{value:e.encounter,loadTimelineResources:async(o,t,r)=>Promise.allSettled([o.readHistory("Encounter",r),o.search("Communication","encounter=Encounter/"+r),o.search("Media","encounter=Encounter/"+r)]),createCommunication:(o,t,r)=>({resourceType:"Communication",status:"completed",encounter:Qt(o),subject:o.subject,sender:Qt(t),sent:new Date().toISOString(),payload:[{contentString:r}]}),createMedia:(o,t,r)=>({resourceType:"Media",status:"completed",encounter:Qt(o),subject:o.subject,operator:Qt(t),issued:new Date().toISOString(),content:r})})}import{Button as Dx,Loader as Tx,Table as kx}from"@mantine/core";import{normalizeOperationOutcome as Bx}from"@medplum/core";import ae,{useEffect as Hl,useRef as Vl,useState as _t}from"react";import{evalFhirPath as Ip}from"@medplum/core";import gp from"react";function ll(e){let o;try{o=Ip(e.path,e.resource)}catch(t){return console.warn("FhirPathDisplay:",t),null}if(o.length>1)throw new Error(`Component "path" for "FhirPathDisplay" must resolve to a single element. Received ${o.length} elements [${JSON.stringify(o,null,2)}]`);return gp.createElement(pe,{value:o[0]||"",propertyType:e.propertyType})}import{ActionIcon as ix,Button as Ro,Center as Kt,createStyles as ux,Group as jt,Loader as dx,Menu as Ll,Pagination as cx,Table as mx,Text as Ma,UnstyledButton as px}from"@mantine/core";import{DEFAULT_SEARCH_COUNT as Ea,formatSearchQuery as xx,globalSchema as Ix}from"@medplum/core";import b,{useCallback as Rl,useEffect as Nl,useRef as gx,useState as Fa}from"react";import{Box as hp,Button as Cp,Modal as yp,Text as vp}from"@mantine/core";import Oo from"react";function il(e){return Oo.createElement(yp,{title:"Export",closeButtonProps:{"aria-label":"Close"},opened:e.visible,onClose:e.onCancel},Oo.createElement(hp,{display:"flex",sx:{justifyContent:"space-between"}},e.exportCsv&&Oo.createElement(sl,{text:"CSV",exportLogic:e.exportCsv,onCancel:e.onCancel}),e.exportTransactionBundle&&Oo.createElement(sl,{text:"Transaction Bundle",exportLogic:e.exportTransactionBundle,onCancel:e.onCancel})),Oo.createElement(vp,{sx:{marginTop:"10px",marginLeft:"2px"}},"Limited to 1000 records"))}function sl(e){return Oo.createElement(Cp,{onClick:()=>{e.exportLogic(),e.onCancel()}},`Export as ${e.text}`)}import{Button as st,Modal as Fp}from"@mantine/core";import{getDataType as wp,getSearchParameters as Op,stringify as Ep}from"@medplum/core";import J,{useEffect as Lp,useRef as Pl,useState as Rp}from"react";import{capitalize as Sp,DEFAULT_SEARCH_COUNT as bp,evalFhirPathTyped as Pp,formatDateTime as Dp,Operator as w}from"@medplum/core";import zt from"react";var Tp={string:[w.EQUALS,w.NOT,w.CONTAINS,w.EXACT],fulltext:[w.EQUALS,w.NOT,w.CONTAINS,w.EXACT],token:[w.EQUALS,w.NOT],reference:[w.EQUALS,w.NOT],numeric:[w.EQUALS,w.NOT_EQUALS,w.GREATER_THAN,w.LESS_THAN,w.GREATER_THAN_OR_EQUALS,w.LESS_THAN_OR_EQUALS],quantity:[w.EQUALS,w.NOT_EQUALS,w.GREATER_THAN,w.LESS_THAN,w.GREATER_THAN_OR_EQUALS,w.LESS_THAN_OR_EQUALS],date:[w.EQUALS,w.NOT_EQUALS,w.GREATER_THAN,w.LESS_THAN,w.GREATER_THAN_OR_EQUALS,w.LESS_THAN_OR_EQUALS,w.STARTS_AFTER,w.ENDS_BEFORE,w.APPROXIMATELY],datetime:[w.EQUALS,w.NOT_EQUALS,w.GREATER_THAN,w.LESS_THAN,w.GREATER_THAN_OR_EQUALS,w.LESS_THAN_OR_EQUALS,w.STARTS_AFTER,w.ENDS_BEFORE,w.APPROXIMATELY]},kp={eq:"equals",ne:"not equals",gt:"greater than",lt:"less than",ge:"greater than or equals",le:"less than or equals",sa:"starts after",eb:"ends before",ap:"approximately",contains:"contains",exact:"exact",text:"text",not:"not",above:"above",below:"below",in:"in","not-in":"not in","of-type":"of type",missing:"missing",identifier:"identifier",iterate:"iterate"};function ft(e,o){return{...e,filters:o,offset:0,name:void 0}}function QA(e){return ft(e,[])}function Wt(e,o){return ft(e,(e.filters??[]).filter(t=>t.code!==o))}function Eo(e,o,t,r,a){a&&(e=Wt(e,o));let n=[];return e.filters&&n.push(...e.filters),n.push({code:o,operator:t,value:r??""}),ft(e,n)}function zA(e,o){if(e.fields?.includes(o))return e;let t=[];return e.fields&&t.push(...e.fields),t.push(o),{...e,fields:t,name:void 0}}function dl(e,o){if(!e.filters)return e;let t=[...e.filters];return t.splice(o,1),{...e,filters:t,name:void 0}}function cl(e,o){return Sa(e,o,-1)}function ml(e,o){return Sa(e,o,0)}function pl(e,o){return Sa(e,o,1)}function Sa(e,o,t){let r=new Date;r.setDate(r.getDate()+t),r.setHours(0,0,0,0);let a=new Date(r.getTime());return a.setDate(a.getDate()+1),a.setTime(a.getTime()-1),Pa(e,o,r,a)}function xl(e,o){return ba(e,o,-1)}function Il(e,o){return ba(e,o,0)}function gl(e,o){return ba(e,o,1)}function ba(e,o,t){let r=new Date;r.setMonth(r.getMonth()+t),r.setDate(1),r.setHours(0,0,0,0);let a=new Date(r.getTime());return a.setMonth(a.getMonth()+1),a.setDate(1),a.setHours(0,0,0,0),a.setTime(a.getTime()-1),Pa(e,o,r,a)}function hl(e,o){let t=new Date;return t.setMonth(0),t.setDate(1),t.setHours(0,0,0,0),Pa(e,o,t,new Date)}function Pa(e,o,t,r){return e=Wt(e,o),e=ul(e,o,w.GREATER_THAN_OR_EQUALS,t),e=ul(e,o,w.LESS_THAN_OR_EQUALS,r),e}function ul(e,o,t,r){return Eo(e,o,t,r.toISOString())}function Da(e,o,t=!0){return Eo(e,o,w.MISSING,t.toString())}function Bp(e,o){return e.offset===o?e:{...e,offset:o,name:void 0}}function Cl(e,o){let t=e.count??bp,r=(o-1)*t;return Bp(e,r)}function Ta(e,o,t){return o===yl(e)&&t!==void 0&&t===vl(e)?e:{...e,sortRules:[{code:o,descending:!!t}],name:void 0}}function WA(e,o){let t=!1;return yl(e)===o&&(t=!vl(e)),Ta(e,o,t)}function yl(e){let o=e.sortRules;if(!o||o.length===0)return;let t=o[0].code;return t.startsWith("-")?t.substr(1):t}function vl(e){let o=e.sortRules;return!o||o.length===0?!1:!!o[0].descending}function Sl(e){return Tp[e.type]}function lt(e){return kp[e]??""}function ye(e){let o=e;return o.includes(".")&&(o=o.split(".").pop()),o==="id"||o==="Id"?"ID":o==="versionId"?"Version ID":(o=o.replace("[x]",""),o=o.replace(/([A-Z])/g," $1"),o=o.replace(/[-_]/g," "),o=o.replace(/\s+/g," "),o=o.trim(),o.split(/\s/).map(Sp).join(" "))}function bl(e,o){let t=o.name;return t==="id"?e.id:t==="meta.versionId"?e.meta?.versionId:t==="_lastUpdated"?Dp(e.meta?.lastUpdated):o.elementDefinition&&`${e.resourceType}.${o.name}`===o.elementDefinition.path?Ap(e,o.elementDefinition):o.searchParams&&o.searchParams.length===1&&o.name===o.searchParams[0].code?Mp(e,o.searchParams[0]):null}function Ap(e,o){let t=o.path?.split(".")?.pop()?.replaceAll("[x]","")??"",[r,a]=Se({type:e.resourceType,value:e},t);return r?zt.createElement(pe,{property:o,propertyType:a,value:r,maxWidth:200,ignoreMissingValues:!0,link:!1}):null}function Mp(e,o){let t=Pp(o.expression,[{type:e.resourceType,value:e}]);return!t||t.length===0?null:zt.createElement(zt.Fragment,null,t.map((r,a)=>zt.createElement(pe,{key:`${a}-${t.length}`,propertyType:r.type,value:r.value,maxWidth:200,ignoreMissingValues:!0,link:!1})))}function Dl(e){let[o,t]=Rp({search:JSON.parse(Ep(e.search))}),r=Pl(null),a=Pl(null);Lp(()=>{t({search:e.search})},[e.search]);function n(x){x.key==="Enter"&&i()}function f(){i()}function s(x){x.key==="Enter"&&u()}function l(){u()}function i(){let x=o.search.fields??[],O=r.current?.value;if(O){let h=[...x,O];t({search:{...o.search,fields:h}})}}function u(){let x=o.search.fields??[],O=a.current?.value;if(O){let h=[...x];h.splice(h.indexOf(O),1),t({search:{...o.search,fields:h}})}}function d(){let x=o.search.fields??[],O=a.current?.value;if(!O)return;let h=[...x],F=h.indexOf(O);F<=0||(g(h,F,F-1),t({search:{...o.search,fields:h}}))}function c(){let x=o.search.fields??[],O=a.current?.value;if(!O)return;let h=[...x],F=h.indexOf(O);F>=h.length-1||(g(h,F,F+1),t({search:{...o.search,fields:h}}))}function g(x,O,h){let F=x[O];x[O]=x[h],x[h]=F}if(!e.visible)return null;let y=e.search.resourceType,A=wp(y),v=Op(y),D=o.search.fields??[],B=Np(A,v).filter(x=>!D.includes(x)).sort((x,O)=>x.localeCompare(O));return J.createElement(Fp,{title:"Fields",closeButtonProps:{"aria-label":"Close"},opened:e.visible,onClose:e.onCancel},J.createElement("div",null,J.createElement("table",{style:{margin:"auto"}},J.createElement("thead",null,J.createElement("tr",null,J.createElement("th",{colSpan:2,align:"center"},"Available"),J.createElement("th",{colSpan:2,align:"center"},"Selected"))),J.createElement("tbody",null,J.createElement("tr",null,J.createElement("td",{colSpan:2,align:"center"},J.createElement("select",{ref:r,size:15,tabIndex:1,style:{width:"200px"},onKeyDown:x=>n(x),onDoubleClick:()=>f(),"data-testid":"available"},B.map(x=>J.createElement("option",{key:x,value:x},ye(x))))),J.createElement("td",{colSpan:2,align:"center"},J.createElement("select",{ref:a,size:15,tabIndex:4,style:{width:"200px"},onKeyDown:x=>s(x),onDoubleClick:()=>l(),"data-testid":"selected"},D.map(x=>J.createElement("option",{key:x,value:x},ye(x))))))),J.createElement("tfoot",null,J.createElement("tr",null,J.createElement("td",{align:"center"},J.createElement(st,{compact:!0,variant:"outline",onClick:i},"Add")),J.createElement("td",{align:"center"},J.createElement(st,{compact:!0,variant:"outline",onClick:u},"Remove")),J.createElement("td",{align:"center"},J.createElement(st,{compact:!0,variant:"outline",onClick:d},"Up")),J.createElement("td",{align:"center"},J.createElement(st,{compact:!0,variant:"outline",onClick:c},"Down")))))),J.createElement(st,{onClick:()=>e.onOk(o.search)},"OK"))}function Np(e,o){let t=[],r=new Set,a=new Set;for(let n of Object.keys(e.elements))t.push(n),r.add(n.toLowerCase()),a.add(ye(n));if(o)for(let n of Object.keys(o)){let f=ye(n);!r.has(n)&&!a.has(f)&&(t.push(n),r.add(n),a.add(ye(n)))}return t}import{Button as ut,Group as Wp,Modal as Xp,NativeSelect as kl}from"@mantine/core";import{globalSchema as Jp,stringify as Bl}from"@medplum/core";import N,{useEffect as $p,useRef as Ml,useState as Ba}from"react";import{formatDateTime as Hp,getSearchParameterDetails as Vp,globalSchema as qp,Operator as Tl,SearchParameterType as Gp}from"@medplum/core";import it from"react";function Xt(e){let{resourceType:o,filter:t}=e,r=qp.types[o].searchParams?.[t.code];if(r){if(r.type==="reference"&&(t.operator===Tl.EQUALS||t.operator===Tl.NOT_EQUALS))return it.createElement(Le,{value:{reference:t.value}});let a=Vp(o,r);if(t.code==="_lastUpdated"||a.type===Gp.DATETIME)return it.createElement(it.Fragment,null,Hp(t.value))}return it.createElement(it.Fragment,null,t.value)}import{Checkbox as Up,TextInput as ka}from"@mantine/core";import{getSearchParameterDetails as Qp,SearchParameterType as Lo}from"@medplum/core";import lo from"react";function Jt(e){let o=Qp(e.resourceType,e.searchParam),t="filter-value";switch(o.type){case Lo.REFERENCE:return lo.createElement(Ao,{name:t,defaultValue:e.defaultValue?{reference:e.defaultValue}:void 0,targetTypes:e.searchParam.target,autoFocus:e.autoFocus,onChange:r=>{r?e.onChange(r.reference):e.onChange("")}});case Lo.BOOLEAN:return lo.createElement(Up,{name:t,"data-autofocus":e.autoFocus,"data-testid":t,defaultChecked:e.defaultValue==="true",autoFocus:e.autoFocus,onChange:r=>e.onChange(r.currentTarget.checked.toString())});case Lo.DATE:return lo.createElement(ka,{type:"date",name:t,"data-autofocus":e.autoFocus,"data-testid":t,defaultValue:e.defaultValue,autoFocus:e.autoFocus,onChange:r=>e.onChange(r.currentTarget.value)});case Lo.DATETIME:return lo.createElement(Me,{name:t,defaultValue:e.defaultValue,autoFocus:e.autoFocus,onChange:e.onChange});case Lo.NUMBER:return lo.createElement(ka,{type:"number",name:t,"data-autofocus":e.autoFocus,"data-testid":t,defaultValue:e.defaultValue,autoFocus:e.autoFocus,onChange:r=>e.onChange(r.currentTarget.value)});case Lo.QUANTITY:return lo.createElement(De,{name:t,defaultValue:zp(e.defaultValue),autoFocus:e.autoFocus,onChange:r=>{r?e.onChange(`${r.value}`):e.onChange("")}});default:return lo.createElement(ka,{name:t,"data-autofocus":e.autoFocus,"data-testid":t,defaultValue:e.defaultValue,autoFocus:e.autoFocus,onChange:r=>e.onChange(r.currentTarget.value),placeholder:"Search value"})}}function zp(e){if(e){let[o,t,r]=e.split("|");if(o)return{value:parseFloat(o),system:t,unit:r}}}function Fl(e){let[o,t]=Ba(JSON.parse(Bl(e.search))),[r,a]=Ba(-1),n=Ml(o);n.current=o,$p(()=>{t(JSON.parse(Bl(e.search)))},[e.search]);function f(u){t(Eo(n.current,u.code,u.operator,u.value))}if(!e.visible)return null;let s=e.search.resourceType,l=Jp.types[s].searchParams??{},i=o.filters||[];return N.createElement(Xp,{title:"Filters",closeButtonProps:{"aria-label":"Close"},size:900,opened:e.visible,onClose:e.onCancel},N.createElement("div",null,N.createElement("table",null,N.createElement("colgroup",null,N.createElement("col",{style:{width:200}}),N.createElement("col",{style:{width:200}}),N.createElement("col",{style:{width:380}}),N.createElement("col",{style:{width:120}})),N.createElement("thead",null,N.createElement("tr",null,N.createElement("th",null,"Field"),N.createElement("th",null,"Operation"),N.createElement("th",null,"Value"),N.createElement("th",null,"Actions"))),N.createElement("tbody",null,i.map((u,d)=>d===r?N.createElement(Al,{key:`filter-${u.code}-${u.operator}-${u.value}-input`,resourceType:s,searchParams:l,defaultValue:u,okText:"Save",onOk:c=>{let g=[...i];g[d]=c,t(ft(n.current,g)),a(-1)},onCancel:()=>a(-1)}):N.createElement(Kp,{key:`filter-${u.code}-${u.operator}-${u.value}-display`,resourceType:s,searchParams:l,filter:u,onEdit:()=>a(d),onDelete:()=>t(dl(n.current,d))})),N.createElement(Al,{resourceType:s,searchParams:l,okText:"Add",onOk:f})))),N.createElement(Wp,{position:"right",mt:"xl"},N.createElement(ut,{onClick:()=>e.onOk(n.current)},"OK")))}function Kp(e){let{filter:o}=e;return N.createElement("tr",null,N.createElement("td",null,ye(o.code)),N.createElement("td",null,lt(o.operator)),N.createElement("td",null,N.createElement(Xt,{resourceType:e.resourceType,filter:o})),N.createElement("td",null,N.createElement(ut,{compact:!0,variant:"outline",onClick:e.onEdit},"Edit"),N.createElement(ut,{compact:!0,variant:"outline",onClick:e.onDelete},"Delete")))}function Al(e){let[o,t]=Ba(e.defaultValue??{}),r=Ml(o);r.current=o;function a(i){t({...r.current,code:i})}function n(i){t({...r.current,operator:i})}function f(i){t({...r.current,value:i})}let s=e.searchParams[o.code],l=s&&Sl(s);return N.createElement("tr",null,N.createElement("td",null,N.createElement(kl,{"data-testid":"filter-field",defaultValue:r.current.code,onChange:i=>a(i.currentTarget.value),data:["",...Object.keys(e.searchParams).map(i=>({value:i,label:ye(i)}))]})),N.createElement("td",null,l&&N.createElement(kl,{"data-testid":"filter-operation",defaultValue:o.operator,onChange:i=>n(i.currentTarget.value),data:["",...l.map(i=>({value:i,label:lt(i)}))]})),N.createElement("td",null,s&&o.operator&&N.createElement(Jt,{resourceType:e.resourceType,searchParam:s,defaultValue:o.value,onChange:f})),N.createElement("td",null,o.code&&o.operator&&o.value&&N.createElement(ut,{compact:!0,variant:"outline",onClick:()=>{e.onOk(r.current),t({})}},e.okText),e.onCancel&&N.createElement(ut,{compact:!0,variant:"outline",onClick:e.onCancel},"Cancel")))}import{Button as jp,Grid as Aa,Modal as _p}from"@mantine/core";import so,{useState as Zp}from"react";function wl(e){let[o,t]=Zp(e.defaultValue??"");if(!e.visible||!e.searchParam||!e.filter)return null;function r(){e.onOk({...e.filter,value:o})}return so.createElement(_p,{title:e.title,size:"xl",opened:e.visible,onClose:e.onCancel},so.createElement($,{onSubmit:r},so.createElement(Aa,null,so.createElement(Aa.Col,{span:10},so.createElement(Jt,{resourceType:e.resourceType,searchParam:e.searchParam,defaultValue:o,autoFocus:!0,onChange:t})),so.createElement(Aa.Col,{span:2},so.createElement(jp,{onClick:r,fullWidth:!0},"OK")))))}import{Menu as M}from"@mantine/core";import{Operator as de}from"@medplum/core";import m from"react";function Ol(e){if(!e.searchParams)return null;function o(n,f){a(Ta(e.search,n.code,f))}function t(n){a(Wt(e.search,n.code))}function r(n,f){e.onPrompt(n,{code:n.code,operator:f,value:""})}function a(n){e.onChange(n)}return e.searchParams.length===1?m.createElement(Yp,{search:e.search,searchParam:e.searchParams[0],onSort:o,onPrompt:r,onChange:a,onClear:t}):m.createElement(M.Dropdown,null,e.searchParams.map(n=>m.createElement(M.Item,{key:n.code},ye(n.code))))}function Yp(e){switch(e.searchParam.type){case"date":return m.createElement(ex,{...e});case"number":case"quantity":return m.createElement(ox,{...e});case"reference":return m.createElement(tx,{...e});case"string":case"token":case"uri":return m.createElement(rx,{...e});default:return m.createElement(m.Fragment,null,"Unknown search param type: ",e.searchParam.type)}}function ex(e){let{searchParam:o}=e,t=o.code;return m.createElement(M.Dropdown,null,m.createElement(M.Item,{icon:m.createElement($o,{size:14}),onClick:()=>e.onSort(o,!1)},"Sort Oldest to Newest"),m.createElement(M.Item,{icon:m.createElement(Ko,{size:14}),onClick:()=>e.onSort(o,!0)},"Sort Newest to Oldest"),m.createElement(M.Divider,null),m.createElement(M.Item,{icon:m.createElement(Io,{size:14}),onClick:()=>e.onPrompt(o,de.EQUALS)},"Equals..."),m.createElement(M.Item,{icon:m.createElement(xo,{size:14}),onClick:()=>e.onPrompt(o,de.NOT_EQUALS)},"Does not equal..."),m.createElement(M.Divider,null),m.createElement(M.Item,{icon:m.createElement(Ct,{size:14}),onClick:()=>e.onPrompt(o,de.ENDS_BEFORE)},"Before..."),m.createElement(M.Item,{icon:m.createElement(ht,{size:14}),onClick:()=>e.onPrompt(o,de.STARTS_AFTER)},"After..."),m.createElement(M.Item,{icon:m.createElement(br,{size:14}),onClick:()=>e.onPrompt(o,de.EQUALS)},"Between..."),m.createElement(M.Divider,null),m.createElement(M.Item,{icon:m.createElement(Re,{size:14}),onClick:()=>e.onChange(pl(e.search,t))},"Tomorrow"),m.createElement(M.Item,{icon:m.createElement(Re,{size:14}),onClick:()=>e.onChange(ml(e.search,t))},"Today"),m.createElement(M.Item,{icon:m.createElement(Re,{size:14}),onClick:()=>e.onChange(cl(e.search,t))},"Yesterday"),m.createElement(M.Divider,null),m.createElement(M.Item,{icon:m.createElement(Re,{size:14}),onClick:()=>e.onChange(gl(e.search,t))},"Next Month"),m.createElement(M.Item,{icon:m.createElement(Re,{size:14}),onClick:()=>e.onChange(Il(e.search,t))},"This Month"),m.createElement(M.Item,{icon:m.createElement(Re,{size:14}),onClick:()=>e.onChange(xl(e.search,t))},"Last Month"),m.createElement(M.Divider,null),m.createElement(M.Item,{icon:m.createElement(Re,{size:14}),onClick:()=>e.onChange(hl(e.search,t))},"Year to date"),m.createElement($t,{...e}))}function ox(e){let{searchParam:o}=e;return m.createElement(M.Dropdown,null,m.createElement(M.Item,{icon:m.createElement($o,{size:14}),onClick:()=>e.onSort(o,!1)},"Sort Smallest to Largest"),m.createElement(M.Item,{icon:m.createElement(Ko,{size:14}),onClick:()=>e.onSort(o,!0)},"Sort Largest to Smallest"),m.createElement(M.Divider,null),m.createElement(M.Item,{icon:m.createElement(Io,{size:14}),onClick:()=>e.onPrompt(o,de.EQUALS)},"Equals..."),m.createElement(M.Item,{icon:m.createElement(xo,{size:14}),onClick:()=>e.onPrompt(o,de.NOT_EQUALS)},"Does not equal..."),m.createElement(M.Divider,null),m.createElement(M.Item,{icon:m.createElement(ht,{size:14}),onClick:()=>e.onPrompt(o,de.GREATER_THAN)},"Greater than..."),m.createElement(M.Item,{icon:m.createElement(go,{size:14}),onClick:()=>e.onPrompt(o,de.GREATER_THAN_OR_EQUALS)},"Greater than or equal to..."),m.createElement(M.Item,{icon:m.createElement(Ct,{size:14}),onClick:()=>e.onPrompt(o,de.LESS_THAN)},"Less than..."),m.createElement(M.Item,{icon:m.createElement(go,{size:14}),onClick:()=>e.onPrompt(o,de.LESS_THAN_OR_EQUALS)},"Less than or equal to..."),m.createElement($t,{...e}))}function tx(e){let{searchParam:o}=e;return m.createElement(M.Dropdown,null,m.createElement(M.Item,{icon:m.createElement(Io,{size:14}),onClick:()=>e.onPrompt(o,de.EQUALS)},"Equals..."),m.createElement(M.Item,{icon:m.createElement(xo,{size:14}),onClick:()=>e.onPrompt(o,de.NOT)},"Does not equal..."),m.createElement($t,{...e}))}function rx(e){let{searchParam:o}=e;return m.createElement(M.Dropdown,null,m.createElement(M.Item,{icon:m.createElement($o,{size:14}),onClick:()=>e.onSort(o,!1)},"Sort A to Z"),m.createElement(M.Item,{icon:m.createElement(Ko,{size:14}),onClick:()=>e.onSort(o,!0)},"Sort Z to A"),m.createElement(M.Divider,null),m.createElement(M.Item,{icon:m.createElement(Io,{size:14}),onClick:()=>e.onPrompt(o,de.EQUALS)},"Equals..."),m.createElement(M.Item,{icon:m.createElement(xo,{size:14}),onClick:()=>e.onPrompt(o,de.NOT)},"Does not equal..."),m.createElement(M.Divider,null),m.createElement(M.Item,{icon:m.createElement(Dr,{size:14}),onClick:()=>e.onPrompt(o,de.CONTAINS)},"Contains..."),m.createElement(M.Item,{icon:m.createElement(Pr,{size:14}),onClick:()=>e.onPrompt(o,de.EQUALS)},"Does not contain..."),m.createElement($t,{...e}))}function $t(e){let{searchParam:o}=e,t=o.code;return m.createElement(m.Fragment,null,m.createElement(M.Divider,null),m.createElement(M.Item,{icon:m.createElement(vr,{size:14}),onClick:()=>e.onChange(Da(e.search,t))},"Missing"),m.createElement(M.Item,{icon:m.createElement(yr,{size:14}),onClick:()=>e.onChange(Da(e.search,t,!1))},"Not missing"),m.createElement(M.Divider,null),m.createElement(M.Item,{icon:m.createElement(Jr,{size:14}),onClick:()=>e.onClear(o)},"Clear filters"))}import{getElementDefinition as ax,getSearchParameter as nx,getSearchParameterDetails as fx,getSearchParameters as lx}from"@medplum/core";function El(e){let o=e.resourceType,t=[];for(let r of e.fields||["id","_lastUpdated"])t.push(sx(o,r));return t}function sx(e,o){if(o==="_lastUpdated")return{name:"_lastUpdated",searchParams:[{resourceType:"SearchParameter",base:["Resource"],code:"_lastUpdated",name:"_lastUpdated",type:"date",expression:"Resource.meta.lastUpdated"}]};if(o==="meta.versionId")return{name:"meta.versionId",searchParams:[{resourceType:"SearchParameter",base:["Resource"],code:"_versionId",name:"_versionId",type:"token",expression:"Resource.meta.versionId"}]};let t=ax(e,o),r=nx(e,o.toLowerCase());if(t&&r)return{name:o,elementDefinition:t,searchParams:[r]};if(t){let a=lx(e),n;if(a){let f=`${e}.${o.replaceAll("[x]","")}`;n=Object.values(a).filter(s=>s.expression?.includes(f)),n.length===0&&(n=void 0)}return{name:o,elementDefinition:t,searchParams:n}}if(r){let a=fx(e,r);return{name:o,elementDefinition:a.elementDefinitions?.[0],searchParams:[r]}}return{name:o}}var wa=class extends Event{constructor(t){super("change");this.definition=t}},Oa=class extends Event{constructor(t){super("load");this.response=t}},io=class extends Event{constructor(t,r){super("click");this.resource=t,this.browserEvent=r}},hx=ux(e=>({root:{maxWidth:"100%",overflow:"auto",textAlign:"left",marginBottom:"20px"},table:{cursor:"pointer"},tr:{"&:hover":{backgroundColor:e.colorScheme==="dark"?e.colors.dark[7]:e.colors.gray[0]}},th:{padding:"0 !important"},control:{width:"100%",padding:`${e.spacing.xs} ${e.spacing.md}`,"&:hover":{backgroundColor:e.colorScheme==="dark"?e.colors.dark[6]:e.colors.gray[0]}},icon:{width:21,height:21,borderRadius:21}}));function Cx(e){let{classes:o}=hx(),t=S(),[r,a]=Fa(!1),[n,f]=Fa(),{search:s,onLoad:l}=e,[i,u]=Fa({selected:{},fieldEditorVisible:!1,filterEditorVisible:!1,exportDialogVisible:!1,filterDialogVisible:!1}),d=gx(i);d.current=i;let c=s.total??"accurate",g=Rl(T=>{f(void 0),t.search(s.resourceType,xx({...s,total:c,fields:void 0}),T).then(W=>{u({...d.current,searchResponse:W}),l&&l(new Oa(W))}).catch(W=>{u({...d.current,searchResponse:void 0}),f(W)})},[t,s,c,l]),y=Rl(()=>{u({...d.current,searchResponse:void 0}),g({cache:"reload"})},[g]);Nl(()=>{g()},[g]);function A(T,W){T.stopPropagation();let le=T.target.checked,me={...d.current.selected};le?me[W]=!0:delete me[W],u({...d.current,selected:me})}function v(T){T.stopPropagation();let ee=T.target.checked,le={},me=d.current.searchResponse;ee&&me?.entry&&me.entry.forEach(Uo=>{Uo.resource?.id&&(le[Uo.resource.id]=!0)}),u({...d.current,selected:le})}function D(){let T=d.current;if(!T.searchResponse?.entry||T.searchResponse.entry.length===0)return!1;for(let W of T.searchResponse.entry)if(W.resource?.id&&!T.selected[W.resource.id])return!1;return!0}function B(T){e.onChange&&e.onChange(new wa(T))}function x(T,W){if(vt(T.target)||T.button===2)return;V(T);let ee=T.button===1||T.ctrlKey||T.metaKey;!ee&&e.onClick&&e.onClick(new io(W,T)),ee&&e.onAuxClick&&e.onAuxClick(new io(W,T))}function O(){return!!(e.onExport??e.onExportCsv??e.onExportTransactionBundle)}if(Nl(()=>{a(!1),t.requestSchema(e.search.resourceType).then(()=>a(!0)).catch(console.log)},[t,e.search.resourceType]),!(r&&Ix.types[e.search.resourceType]))return b.createElement(Kt,{style:{width:"100%",height:"100%"}},b.createElement(dx,null));let F=e.checkboxesEnabled,_=El(s),Pe=s.resourceType,fe=i.searchResponse,C=fe?.entry?.map(T=>T.resource),H="subtle",Be="gray",he=16,oo=window.innerWidth<768;return b.createElement("div",{className:o.root,"data-testid":"search-control"},!e.hideToolbar&&b.createElement(jt,{position:"apart",mb:"xl"},b.createElement(jt,{spacing:2},b.createElement(Ro,{compact:!0,variant:H,color:Be,leftIcon:b.createElement(Br,{size:he}),onClick:()=>u({...d.current,fieldEditorVisible:!0})},"Fields"),b.createElement(Ro,{compact:!0,variant:H,color:Be,leftIcon:b.createElement(Lr,{size:he}),onClick:()=>u({...d.current,filterEditorVisible:!0})},"Filters"),e.onNew&&b.createElement(Ro,{compact:!0,variant:H,color:Be,leftIcon:b.createElement(Er,{size:he}),onClick:e.onNew},"New..."),!oo&&O()&&b.createElement(Ro,{compact:!0,variant:H,color:Be,leftIcon:b.createElement(Xr,{size:he}),onClick:e.onExport?e.onExport:()=>u({...d.current,exportDialogVisible:!0})},"Export..."),!oo&&e.onDelete&&b.createElement(Ro,{compact:!0,variant:H,color:Be,leftIcon:b.createElement(jo,{size:he}),onClick:()=>e.onDelete(Object.keys(i.selected))},"Delete..."),!oo&&e.onBulk&&b.createElement(Ro,{compact:!0,variant:H,color:Be,leftIcon:b.createElement(Sr,{size:he}),onClick:()=>e.onBulk(Object.keys(i.selected))},"Bulk...")),b.createElement(jt,{spacing:2},fe&&b.createElement(Ma,{size:"xs",color:"dimmed"},bx(s,fe.total),"-",Px(s,fe.total)," of"," ",`${c==="estimate"?"~":""}${fe.total?.toLocaleString()}`),b.createElement(ix,{title:"Refresh",onClick:y},b.createElement(Ur,{size:"1.125rem"})))),b.createElement(mx,{className:o.table},b.createElement("thead",null,b.createElement("tr",null,F&&b.createElement("th",null,b.createElement("input",{type:"checkbox",value:"checked","aria-label":"all-checkbox","data-testid":"all-checkbox",checked:D(),onChange:T=>v(T)})),_.map(T=>b.createElement("th",{key:T.name},b.createElement(Ll,{shadow:"md",width:240,position:"bottom-end"},b.createElement(Ll.Target,null,b.createElement(px,{className:o.control},b.createElement(jt,{position:"apart",noWrap:!0},b.createElement(Ma,{weight:500,size:"sm"},ye(T.name)),b.createElement(Kt,{className:o.icon},b.createElement(gr,{size:14,stroke:1.5}))))),b.createElement(Ol,{search:e.search,searchParams:T.searchParams,onPrompt:(W,ee)=>{u({...d.current,filterDialogVisible:!0,filterDialogSearchParam:W,filterDialogFilter:ee})},onChange:W=>{B(W)}}))))),!e.hideFilters&&b.createElement("tr",null,F&&b.createElement("th",null),_.map(T=>b.createElement("th",{key:T.name},T.searchParams&&b.createElement(yx,{resourceType:Pe,searchParams:T.searchParams,filters:e.search.filters}))))),b.createElement("tbody",null,C?.map(T=>T&&b.createElement("tr",{key:T.id,className:o.tr,"data-testid":"search-control-row",onClick:W=>x(W,T),onAuxClick:W=>x(W,T)},F&&b.createElement("td",null,b.createElement("input",{type:"checkbox",value:"checked","data-testid":"row-checkbox","aria-label":`Checkbox for ${T.id}`,checked:!!i.selected[T.id],onChange:W=>A(W,T.id)})),_.map(W=>b.createElement("td",{key:W.name},bl(T,W))))))),C?.length===0&&b.createElement(Ke,null,b.createElement(Kt,{style:{height:150}},b.createElement(Ma,{size:"xl",color:"dimmed"},"No results"))),fe?.total!==void 0&&fe.total>0&&b.createElement(Kt,{m:"md",p:"md"},b.createElement(cx,{value:vx(s),total:Sx(s,fe.total),onChange:T=>B(Cl(s,T)),getControlProps:T=>{switch(T){case"previous":return{"aria-label":"Previous page"};case"next":return{"aria-label":"Next page"};default:return{}}}})),n&&b.createElement("div",{"data-testid":"search-error"},b.createElement("pre",{style:{textAlign:"left"}},JSON.stringify(n,void 0,2))),b.createElement(Dl,{search:e.search,visible:d.current.fieldEditorVisible,onOk:T=>{B(T),u({...d.current,fieldEditorVisible:!1})},onCancel:()=>{u({...d.current,fieldEditorVisible:!1})}}),b.createElement(Fl,{search:e.search,visible:d.current.filterEditorVisible,onOk:T=>{B(T),u({...d.current,filterEditorVisible:!1})},onCancel:()=>{u({...d.current,filterEditorVisible:!1})}}),b.createElement(il,{visible:d.current.exportDialogVisible,exportCsv:e.onExportCsv,exportTransactionBundle:e.onExportTransactionBundle,onCancel:()=>{u({...d.current,exportDialogVisible:!1})}}),b.createElement(wl,{key:i.filterDialogSearchParam?.code,visible:d.current.filterDialogVisible,title:i.filterDialogSearchParam?.code?ye(i.filterDialogSearchParam.code):"",resourceType:Pe,searchParam:i.filterDialogSearchParam,filter:i.filterDialogFilter,defaultValue:"",onOk:T=>{B(Eo(e.search,T.code,T.operator,T.value)),u({...d.current,filterDialogVisible:!1})},onCancel:()=>{u({...d.current,filterDialogVisible:!1})}}))}var tF=b.memo(Cx);function yx(e){let o=(e.filters??[]).filter(t=>e.searchParams.find(r=>r.code===t.code));return o.length===0?b.createElement("span",null,"no filters"):b.createElement(b.Fragment,null,o.map(t=>b.createElement("div",{key:`filter-${t.code}-${t.operator}-${t.value}`},lt(t.operator),"\xA0",b.createElement(Xt,{resourceType:e.resourceType,filter:t}))))}function vx(e){return Math.floor((e.offset??0)/(e.count??Ea))+1}function Sx(e,o){let t=e.count??Ea;return Math.ceil(o/t)}function bx(e,o){return Math.min(o,(e.offset??0)+1)}function Px(e,o){return Math.min(o,((e.offset??0)+1)*(e.count??Ea))}function Ax(e){let o=S(),[t,r]=_t(!1),[a,n]=_t(),{query:f,fields:s}=e,[l,i]=_t(),[u,d]=_t({}),c=Vl();c.current=l;let g=Vl({});g.current=u,Hl(()=>{n(void 0),o.graphql(f).then(i).catch(x=>n(Bx(x)))},[o,f]);function y(x,O){x.stopPropagation();let F=x.target.checked,_={...g.current};F?_[O]=!0:delete _[O],d(_)}function A(x){x.stopPropagation();let h=x.target.checked,F={},_=c.current?.data.ResourceList;h&&_&&_.forEach(Pe=>{Pe.id&&(F[Pe.id]=!0)}),d(F)}function v(){let x=c.current?.data.ResourceList;if(!x||x.length===0)return!1;for(let O of x)if(O.id&&!g.current[O.id])return!1;return!0}function D(x,O){vt(x.target)||(V(x),x.button!==1&&e.onClick&&e.onClick(new io(O,x)),x.button===1&&e.onAuxClick&&e.onAuxClick(new io(O,x)))}if(Hl(()=>{o.requestSchema(e.resourceType).then(()=>r(!0)).catch(console.log)},[o,e.resourceType]),!t)return ae.createElement(Tx,null);let B=e.checkboxesEnabled;return ae.createElement("div",{onContextMenu:x=>V(x),"data-testid":"search-control"},ae.createElement(kx,null,ae.createElement("thead",null,ae.createElement("tr",null,B&&ae.createElement("th",null,ae.createElement("input",{type:"checkbox",value:"checked","aria-label":"all-checkbox","data-testid":"all-checkbox",checked:v(),onChange:x=>A(x)})),s.map(x=>ae.createElement("th",{key:x.name},x.name)))),ae.createElement("tbody",null,l?.data.ResourceList.map(x=>x&&ae.createElement("tr",{key:x.id,"data-testid":"search-control-row",onClick:O=>D(O,x),onAuxClick:O=>D(O,x)},B&&ae.createElement("td",null,ae.createElement("input",{type:"checkbox",value:"checked","data-testid":"row-checkbox","aria-label":`Checkbox for ${x.id}`,checked:!!u[x.id],onChange:O=>y(O,x.id)})),s.map(O=>ae.createElement("td",{key:O.name},ae.createElement(ll,{propertyType:O.propertyType,path:O.fhirPath,resource:x}))))))),l?.data.ResourceList.length===0&&ae.createElement("div",{"data-testid":"empty-search"},"No results"),a&&ae.createElement("div",{"data-testid":"search-error"},ae.createElement("pre",{style:{textAlign:"left"}},JSON.stringify(a,void 0,2))),e.onBulk&&ae.createElement(Dx,{onClick:()=>e.onBulk(Object.keys(g.current))},"Bulk..."))}var dF=ae.memo(Ax);import uo from"react";function Ye(e){return uo.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 491 491",style:{width:e.size,height:e.size}},uo.createElement("title",null,"Medplum Logo"),uo.createElement("path",{fill:e.fill??"#ad7136",d:"M282 67c6-16 16-29 29-40L289 0c-22 17-37 41-43 68l17 23 19-24z"}),uo.createElement("path",{fill:e.fill??"#946af9",d:"M311 63c-17 0-33 4-48 11-16-7-32-11-49-11-87 0-158 96-158 214s71 214 158 214c17 0 33-4 49-11 15 7 31 11 48 11 87 0 158-96 158-214S398 63 311 63z"}),uo.createElement("path",{fill:e.fill??"#7857c5",d:"M231 489l-17 2c-87 0-158-96-158-214S127 63 214 63l17 1c-39 12-70 102-70 213s31 201 70 212z"}),uo.createElement("path",{fill:e.fill??"#40bc26",d:"M207 220a176 176 0 01-177 43A176 176 0 01251 43l1 5c17 59 2 125-45 172z"}),uo.createElement("path",{fill:e.fill??"#33961e",d:"M252 48A421 421 0 0057 270l-27-7A176 176 0 01251 43l1 5z"}))}import{Alert as Mx}from"@mantine/core";import La from"react";function No(e){let o=e.outcome?.issue||e.issues;return!o||o.length===0?null:La.createElement(Mx,{icon:La.createElement(ro,{size:16}),color:"red"},o.map(t=>La.createElement("div",{"data-testid":"text-field-error",key:t.details?.text},t.details?.text)))}import{createReference as Zt}from"@medplum/core";import Fx,{useCallback as wx}from"react";function PF(e){let o=wx((t,r,a)=>{let n=`${r}/${a}`,f=100;return Promise.allSettled([t.readHistory("Patient",a),t.search("Communication",{subject:n,_count:f}),t.search("Device",{patient:n,_count:f}),t.search("DeviceRequest",{patient:n,_count:f}),t.search("DiagnosticReport",{subject:n,_count:f}),t.search("Media",{subject:n,_count:f}),t.search("ServiceRequest",{subject:n,_count:f}),t.search("Task",{subject:n,_count:f})])},[]);return Fx.createElement(Ze,{value:e.patient,loadTimelineResources:o,createCommunication:(t,r,a)=>({resourceType:"Communication",status:"completed",subject:Zt(t),sender:Zt(r),sent:new Date().toISOString(),payload:[{contentString:a}]}),createMedia:(t,r,a)=>({resourceType:"Media",status:"completed",subject:Zt(t),operator:Zt(r),issued:new Date().toISOString(),content:a})})}import{Anchor as Gl,Button as Ox,createStyles as Ex,NativeSelect as Lx,Stack as Rx,TextInput as Na}from"@mantine/core";import{getReferenceString as Nx}from"@medplum/core";import G,{useEffect as ql,useRef as Ul,useState as dt}from"react";var Ql=Ex(e=>({section:{position:"relative",margin:"4px 4px 8px 0",padding:"6px 12px 16px 6px",border:`1.5px solid ${e.colors.gray[1]}`,borderRadius:e.radius.sm,transition:"all 0.1s"},hovering:{border:`1.5px solid ${e.colors.blue[5]}`},editing:{border:`1.5px solid ${e.colors.gray[1]}`,borderLeft:`4px solid ${e.colors.blue[5]}`},bottomActions:{position:"absolute",right:4,bottom:0,fontSize:e.fontSizes.xs,"& a":{marginLeft:8}}}));function qF(e){let o=S(),t=X(e.value),[r,a]=dt(!1),[n,f]=dt(),[s,l]=dt(),[i,u]=dt();function d(){l(void 0)}function c(){f(void 0)}let g=Ul();if(g.current=i,ql(()=>{o.requestSchema("PlanDefinition").then(()=>a(!0)).catch(console.log)},[o]),ql(()=>(u(Qx(t??{resourceType:"PlanDefinition"})),document.addEventListener("mouseover",d),document.addEventListener("click",c),()=>{document.removeEventListener("mouseover",d),document.removeEventListener("click",c)}),[t]),!r||!i)return null;function y(A,v){u({...g.current,[A]:v})}return G.createElement("div",null,G.createElement($,{testid:"questionnaire-form",onSubmit:()=>e.onSubmit(i)},G.createElement(Na,{label:"Plan Title",defaultValue:i.title,onChange:A=>y("title",A.currentTarget.value)}),G.createElement(zl,{actions:i.action||[],selectedKey:n,setSelectedKey:f,hoverKey:s,setHoverKey:l,onChange:A=>y("action",A)}),G.createElement(Ox,{type:"submit"},"Save")))}function zl(e){let{classes:o}=Ql(),t=Ul();t.current=e.actions;function r(f){e.onChange(t.current.map(s=>s.id===f.id?f:s))}function a(f){e.onChange([...t.current,f]),e.setSelectedKey(f.id)}function n(f){e.onChange(t.current.filter(s=>s!==f))}return G.createElement("div",{className:o.section},e.actions.map(f=>G.createElement("div",{key:f.id},G.createElement(Hx,{action:f,selectedKey:e.selectedKey,setSelectedKey:e.setSelectedKey,hoverKey:e.hoverKey,setHoverKey:e.setHoverKey,onChange:r,onRemove:()=>n(f)}))),G.createElement("div",{className:o.bottomActions},G.createElement(Gl,{href:"#",onClick:f=>{V(f),a({id:Xl()})}},"Add action")))}function Hx(e){let{classes:o,cx:t}=Ql(),{action:r}=e,a=Ux(r),n=e.selectedKey===e.action.id,f=e.hoverKey===e.action.id;function s(u){u.stopPropagation(),e.setSelectedKey(e.action.id)}function l(u){V(u),e.setHoverKey(e.action.id)}let i=t(o.section,{[o.editing]:n,[o.hovering]:f&&!n});return G.createElement("div",{"data-testid":r.id,className:i,onClick:s,onMouseOver:l},n?G.createElement(qx,{action:r,actionType:a,onChange:e.onChange,selectedKey:e.selectedKey,setSelectedKey:e.setSelectedKey,hoverKey:e.hoverKey,setHoverKey:e.setHoverKey,onRemove:e.onRemove}):G.createElement(Vx,{action:r,actionType:a}),G.createElement("div",{className:o.bottomActions},G.createElement(Gl,{href:"#",onClick:u=>{u.preventDefault(),e.onRemove()}},"Remove")))}var Ha={path:"PlanDefinition.action.timing[x]",min:0,max:1,description:"",isArray:!1,constraints:[],type:["dateTime","Period","Range","Timing"].map(e=>({code:e}))};function Vx(e){let{action:o,actionType:t}=e,[r,a]=Wl(o);return G.createElement("div",null,G.createElement("div",null,o.title||"Untitled"," ",t&&`(${t})`),o.definitionCanonical&&G.createElement("div",null,G.createElement(no,{value:{reference:o.definitionCanonical}})),r&&G.createElement("div",null,G.createElement(pe,{property:Ha,propertyType:a,value:r})))}function qx(e){let{action:o}=e,[t,r]=dt(e.actionType);function a(n,f){e.onChange({...o,[n]:f})}return G.createElement(Rx,{spacing:"xl"},G.createElement(Na,{name:`actionTitle-${o.id}`,label:"Title",defaultValue:o.title,onChange:n=>a("title",n.currentTarget.value)}),G.createElement(Na,{name:`actionDescription-${o.id}`,label:"Description",defaultValue:o.description,onChange:n=>a("description",n.currentTarget.value)}),G.createElement(Lx,{label:"Type of Action",description:"The type of the action to be performed.",name:`actionType-${o.id}`,defaultValue:t,onChange:n=>r(n.currentTarget.value),data:["","appointment","lab","questionnaire","task"]}),o.action&&o.action.length>0&&G.createElement(zl,{actions:o.action,selectedKey:e.selectedKey,setSelectedKey:e.setSelectedKey,hoverKey:e.hoverKey,setHoverKey:e.setHoverKey,onChange:n=>a("action",n)}),(()=>{switch(t){case"appointment":return G.createElement(Yt,{title:"Appointment",description:"The subject must schedule an appointment from the schedule.",resourceType:"Schedule",action:o,onChange:e.onChange});case"lab":return G.createElement(Yt,{title:"Lab",description:"The subject must complete the following lab panel.",resourceType:"ActivityDefinition",action:o,onChange:e.onChange});case"questionnaire":return G.createElement(Yt,{title:"Questionnaire",description:"The subject must complete the selected questionnaire.",resourceType:"Questionnaire",action:o,onChange:e.onChange});case"task":return G.createElement(Yt,{title:"Task",description:"The subject must complete the following task.",resourceType:"ActivityDefinition",action:o,onChange:e.onChange});default:return null}})(),G.createElement(be,{title:"Timing",description:"When the action should take place."},G.createElement(Gx,{name:"timing-"+o.id,action:o,onChange:e.onChange})))}function Yt(e){let{id:o,definitionCanonical:t}=e.action,r=t?.startsWith(e.resourceType+"/")?{reference:t}:void 0;return G.createElement(Rt,{name:o,resourceType:e.resourceType,defaultValue:r,loadOnFocus:!0,onChange:a=>{a?e.onChange({...e.action,definitionCanonical:Nx(a)}):e.onChange({...e.action,definitionCanonical:void 0})}})}function Gx(e){let o=e.action,t="timing",[r,a]=Wl(o);return G.createElement(He,{property:Ha,name:"timing[x]",defaultValue:r,defaultPropertyType:a,onChange:(n,f)=>{e.onChange(tt(o,t,f??t,Ha,n))}})}function Ux(e){if(e.definitionCanonical?.startsWith("Schedule"))return"appointment";if(e.definitionCanonical?.startsWith("Questionnaire/"))return"questionnaire";if(e.definitionCanonical?.startsWith("ActivityDefinition/"))return"task"}function Wl(e){return Se({type:"PlanDefinitionAction",value:e},"timing")}var Ra=1;function Xl(e){if(e){if(e.startsWith("id-")){let o=parseInt(e.substring(3),10);isNaN(o)||(Ra=Math.max(Ra,o+1))}return e}return"id-"+Ra++}function Qx(e){return{...e,action:Jl(e.action)}}function Jl(e){if(e)return e.map(o=>({...o,id:Xl(o.id),action:Jl(o.action)}))}import{Anchor as ke,Box as Wa,Button as uI,createStyles as dI,Group as cI,NativeSelect as mI,Space as pI,Textarea as xI,TextInput as Xa,Title as II}from"@mantine/core";import{getElementDefinition as gI,isResource as hI}from"@medplum/core";import P,{useEffect as rs,useRef as CI,useState as ar}from"react";import{Checkbox as Kx,Group as jx,MultiSelect as _x,NativeSelect as Zx,Radio as Yl,Textarea as Yx,TextInput as ct}from"@mantine/core";import{capitalize as Ga,deepEquals as eI,formatCoding as Ua,getElementDefinition as oI,getTypedPropertyValue as qe,stringify as es}from"@medplum/core";import Z from"react";import{deepClone as zx,evalFhirPathTyped as Wx,formatCoding as Xx,getExtension as $l,getTypedPropertyValue as Va}from"@medplum/core";var er=(D=>(D.group="group",D.display="display",D.question="question",D.boolean="boolean",D.decimal="decimal",D.integer="integer",D.date="date",D.dateTime="dateTime",D.time="time",D.string="string",D.text="text",D.url="url",D.choice="choice",D.openChoice="open-choice",D.attachment="attachment",D.reference="reference",D.quantity="quantity",D))(er||{});function Kl(e){return e.type==="choice"||e.type==="open-choice"}function jl(e,o){if(!e.enableWhen)return!0;let t=e.enableBehavior??"any";for(let r of e.enableWhen){let a=Zl(o,r.question);if(r.operator==="exists"&&!r.answerBoolean&&!a?.length){if(t==="any")return!0;continue}let{anyMatch:n,allMatch:f}=$x(r,a,t);if(t==="any"&&n)return!0;if(t==="all"&&!f)return!1}return t!=="any"}function _l(e,o,t){return e.map(r=>{let a=t.answerOption?.find(f=>Xx(f.valueCoding)===r||f[o]===r),n=Va({type:"QuestionnaireItemAnswerOption",value:a},"value");return{[o]:n?.value}})}function Zl(e,o){if(e)for(let t of e){if(t.linkId===o)return t.answer;if(t.item){let r=Zl(t.item,o);if(r)return r}}}function Jx(e,o,t){if(t==="exists")return!!e===o.value;if(e){let r=t==="="||t==="!="?t?.replace("=","~"):t,[{value:a}]=Wx(`%actualAnswer ${r} %expectedAnswer`,[e],{actualAnswer:e,expectedAnswer:o});return a}else return!1}function $x(e,o,t){let r=o||[],a=Va({type:"QuestionnaireItemEnableWhen",value:e},"answer[x]"),n=!1,f=!0;for(let s of r){let l=Va({type:"QuestionnaireResponseItemAnswer",value:s},"value[x]"),{operator:i}=e;if(Jx(l,a,i)?n=!0:f=!1,t==="any"&&n)break}return{anyMatch:n,allMatch:f}}function or(e){let o=$l(e,"http://hl7.org/fhir/StructureDefinition/questionnaire-referenceResource");if(o){if(o.valueCode!==void 0)return[o.valueCode];if(o.valueCodeableConcept)return o.valueCodeableConcept?.coding?.map(t=>t.code)}}function tr(e,o){let t=zx(e),r=$l(t,"http://hl7.org/fhir/StructureDefinition/questionnaire-referenceResource");return!o||o.length===0?(r&&(t.extension=t.extension?.filter(a=>a!==r)),t):(r||(t.extension||(t.extension=[]),r={url:"http://hl7.org/fhir/StructureDefinition/questionnaire-referenceResource"},t.extension.push(r)),o.length===1?(r.valueCode=o[0],delete r.valueCodeableConcept):(r.valueCodeableConcept={coding:o.map(a=>({code:a}))},delete r.valueCode),t)}function rr(e){let o=e.item,t=e.index;function r(l,i){let u=i??0,d=e.currentResponseItems?.filter(g=>g.linkId===o.linkId)??[],c;Array.isArray(l)?c=l:c=nI(d[0]?.answer??[],u,l),e.onChange({id:d[0].id,linkId:o.linkId,text:o.text,answer:c})}let a=o.type;if(!a)return null;let n=o.linkId;if(!n)return null;let f=o.initial&&o.initial.length>0?o.initial[0]:void 0,s=za(e.allResponses,o,e.index,e.groupSequence)??qe({type:"QuestionnaireItemInitial",value:f},"value");switch(a){case"boolean":return Z.createElement(Mt,{key:e.item.linkId,title:e.item.text,htmlFor:e.item.linkId},Z.createElement(Kx,{id:e.item.linkId,name:e.item.linkId,defaultChecked:s?.value,onChange:l=>r({valueBoolean:l.currentTarget.checked},t)}));case"decimal":return Z.createElement(ct,{type:"number",step:"any",id:n,name:n,defaultValue:s?.value,onChange:l=>r({valueDecimal:l.currentTarget.valueAsNumber},t)});case"integer":return Z.createElement(ct,{type:"number",step:1,id:n,name:n,defaultValue:s?.value,onChange:l=>r({valueInteger:l.currentTarget.valueAsNumber},t)});case"date":return Z.createElement(ct,{type:"date",id:n,name:n,defaultValue:s?.value,onChange:l=>r({valueDate:l.currentTarget.value},t)});case"dateTime":return Z.createElement(Me,{name:n,defaultValue:s?.value,onChange:l=>r({valueDateTime:l},t)});case"time":return Z.createElement(ct,{type:"time",id:n,name:n,defaultValue:s?.value,onChange:l=>r({valueTime:l.currentTarget.value},t)});case"string":case"url":return Z.createElement(ct,{id:n,name:n,defaultValue:s?.value,onChange:l=>r({valueString:l.currentTarget.value},t)});case"text":return Z.createElement(Yx,{id:n,name:n,defaultValue:s?.value,onChange:l=>r({valueString:l.currentTarget.value},t)});case"attachment":return Z.createElement(jx,{py:4},Z.createElement(Pt,{name:n,defaultValue:s?.value,onChange:l=>r({valueAttachment:l},t)}));case"reference":return Z.createElement(Ao,{name:n,targetTypes:or(o),defaultValue:s?.value,onChange:l=>r({valueReference:l},t)});case"quantity":return Z.createElement(De,{name:n,defaultValue:s?.value,onChange:l=>r({valueQuantity:l},t),disableWheel:!0});case"choice":case"open-choice":return fI(o)?Z.createElement(tI,{name:n,item:o,initial:f,allResponses:e.allResponses,index:t,groupSequence:e.groupSequence,onChangeAnswer:l=>r(l,t)}):Z.createElement(rI,{name:n,item:o,initial:f,allResponses:e.allResponses,onChangeAnswer:l=>r(l,t)});default:return null}}function tI(e){let{name:o,item:t,initial:r}=e,a=qe({type:"QuestionnaireItemInitial",value:r},"value"),n=[""];if(t.answerOption)for(let s of t.answerOption){let l=qe({type:"QuestionnaireItemAnswerOption",value:s},"value");n.push(qa(l))}let f=za(e.allResponses,t,e.index,e.groupSequence)??qe({type:"QuestionnaireItemInitial",value:r},"value");if(t.repeats){let{propertyName:s,data:l}=lI(e.item),i=sI(e.allResponses,t,e.groupSequence);return Z.createElement(_x,{data:l,placeholder:"Select items",searchable:!0,defaultValue:i||[qa(a)],onChange:u=>{let d=_l(u,s,t);e.onChangeAnswer(d)}})}return Z.createElement(Zx,{id:o,name:o,onChange:s=>{let l=s.currentTarget.selectedIndex;if(l===0){e.onChangeAnswer({});return}let i=t.answerOption[l-1],u=qe({type:"QuestionnaireItemAnswerOption",value:i},"value"),d="value"+Ga(u.type);e.onChangeAnswer({[d]:u.value})},defaultValue:(Ua(f?.value)||f?.value)??qa(a),data:n})}function rI(e){let{name:o,item:t,initial:r,onChangeAnswer:a,allResponses:n}=e;return t.answerValueSet?Z.createElement(Je,{binding:t.answerValueSet,onChange:a}):Z.createElement(aI,{name:o,item:t,initial:r,allResponses:n,onChangeAnswer:a})}function aI(e){let{name:o,item:t,initial:r,onChangeAnswer:a}=e,n=oI("QuestionnaireItemAnswerOption","value[x]"),f=qe({type:"QuestionnaireItemInitial",value:r},"value"),s=[],l;if(t.answerOption)for(let d=0;d<t.answerOption.length;d++){let c=t.answerOption[d],g=`${o}-option-${d}`,y=qe({type:"QuestionnaireItemAnswerOption",value:c},"value");f&&es(y)===es(f)&&(l=g),s.push([g,y])}let i=za(e.allResponses,t,e.index,e.groupSequence),u=iI(s,i);return Z.createElement(Yl.Group,{name:o,value:u??l,onChange:d=>{let c=s.find(g=>g[0]===d);if(c){let g=c[1],y="value"+Ga(g.type);a({[y]:g.value})}}},s.map(([d,c])=>Z.createElement(Yl,{key:d,id:d,value:d,py:4,label:Z.createElement(pe,{property:n,propertyType:c.type,value:c.value})})))}function nI(e,o,t){if(o<e.length)return e[o]=t,e;for(let r=e.length;r<o;r++)e.push({});return e.push(t),e}function fI(e){return!!e.extension?.some(o=>o.url==="http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl"&&o.valueCodeableConcept?.coding?.[0]?.code==="drop-down")}function lI(e){if(e.answerOption?.length===0)return{propertyName:"",data:[]};let o=e.answerOption[0],t=qe({type:"QuestionnaireItemAnswerOption",value:o},"value"),r="value"+Ga(t.type),a=(e.answerOption??[]).map(n=>({value:os(n,r),label:os(n,r)}));return{propertyName:r,data:a}}function os(e,o){return Ua(e.valueCoding)||e[o]?.toString()}function qa(e){if(e)return e.type==="CodeableConcept"?e.value.coding[0].display:e.type==="Coding"?e.value.display:e.value.toString()}function Qa(e,o){let t=[];for(let r of e)r.linkId===o&&t.push(r),r.item&&(t=t.concat(Qa(r.item,o)));return t}function ts(e){return qe({type:"QuestionnaireItemAnswer",value:e},"value")}function za(e,o,t=0,r=0){let n=Qa(e,o.linkId??"")[r]?.answer;return ts(n?.[t]??{})}function sI(e,o,t=0){let a=Qa(e,o.linkId??"")[t]?.answer;return a?a.map(f=>ts(f)).map(f=>Ua(f?.value)||f?.value):[]}function iI(e,o){return e.find(t=>eI(t[1].value,o?.value))?.[0]}var yI=dI(e=>({section:{position:"relative",margin:"4px 4px 8px 0",padding:"6px 12px 16px 6px",border:`1.5px solid ${e.colors.gray[1]}`,borderRadius:e.radius.sm,transition:"all 0.1s"},hovering:{border:`1.5px solid ${e.colors.blue[5]}`},editing:{border:`1.5px solid ${e.colors.gray[1]}`,borderLeft:`4px solid ${e.colors.blue[5]}`},questionBody:{maxWidth:600},topActions:{position:"absolute",right:32,top:1,padding:4,color:e.colors.gray[5],fontSize:e.fontSizes.xs},bottomActions:{position:"absolute",right:4,bottom:0,fontSize:e.fontSizes.xs,"& a":{marginLeft:8}},movementActions:{position:"absolute",right:8,top:0,paddingTop:8,fontSize:e.fontSizes.xs,"& a":{marginLeft:8}},movementIcons:{color:e.colors.gray[5]},columnAlignment:{display:"flex",flexDirection:"column"},linkIdInput:{width:100,marginBottom:4},typeSelect:{width:100}}));function hw(e){let o=S(),t=X(e.questionnaire),[r,a]=ar(!1),[n,f]=ar(),[s,l]=ar(),[i,u]=ar();function d(){u(void 0)}function c(){l(void 0)}return rs(()=>{o.requestSchema("Questionnaire").then(()=>a(!0)).catch(console.log)},[o]),rs(()=>(f(PI(t??{resourceType:"Questionnaire"})),document.addEventListener("mouseover",d),document.addEventListener("click",c),()=>{document.removeEventListener("mouseover",d),document.removeEventListener("click",c)}),[t]),!r||!n?null:P.createElement("div",null,P.createElement($,{testid:"questionnaire-form",onSubmit:()=>e.onSubmit(n)},P.createElement(as,{item:n,selectedKey:s,setSelectedKey:l,hoverKey:i,setHoverKey:u,onChange:f}),P.createElement(uI,{type:"submit"},"Save")))}function as(e){let{classes:o,cx:t}=yI(),r=e.item,a=e.item,n=hI(e.item),f=n||a.type==="group",s=a.linkId??"[untitled]",l=e.selectedKey===e.item.id,i=e.hoverKey===e.item.id,u=CI();u.current=e.item;function d(h){V(h),e.setSelectedKey(e.item.id)}function c(h){V(h),e.setHoverKey(e.item.id)}function g(h){let F=u.current;e.onChange({...F,item:F.item?.map(_=>_.id===h.id?h:_)})}function y(h){e.onChange({...e.item,item:[...e.item.item??[],h]})}function A(h){e.onChange({...e.item,item:e.item.item?.filter(F=>F!==h)})}function v(h,F){e.onChange({...u.current,[h]:F})}function D(h){e.onChange({...e.item,...h})}function B(h){e.onChange({...e.item,item:e.item.item?.map(F=>F===h?{...F,repeats:!F.repeats}:F)})}function x(h,F){let _=kI(e.item.item,h,F);e.onChange({...e.item,item:_})}let O=t(o.section,{[o.editing]:l,[o.hovering]:i&&!l});return P.createElement("div",{"data-testid":a.linkId,className:O,onClick:d,onMouseOver:c},P.createElement("div",{className:o.questionBody},l?P.createElement(P.Fragment,null,n&&P.createElement(Xa,{size:"xl",defaultValue:r.title,onChange:h=>v("title",h.currentTarget.value)}),!n&&P.createElement(xI,{autosize:!0,minRows:2,defaultValue:a.text,onChange:h=>v("text",h.currentTarget.value)}),a.type==="reference"&&P.createElement(bI,{item:a,onChange:D}),Kl(a)&&P.createElement(vI,{item:a,onChange:h=>D(h)})):P.createElement(P.Fragment,null,r.title&&P.createElement(II,null,r.title),a.text&&P.createElement("div",null,a.text),!f&&P.createElement(rr,{item:a,index:0,allResponses:[],onChange:()=>{}}))),a.item?.map((h,F)=>P.createElement("div",{key:h.id},P.createElement(as,{item:h,selectedKey:e.selectedKey,setSelectedKey:e.setSelectedKey,hoverKey:e.hoverKey,isFirst:F===0,isLast:F===(e.item.item??[]).length-1,setHoverKey:e.setHoverKey,onChange:g,onRemove:()=>A(h),onRepeatable:B,onMoveUp:()=>x(F,-1),onMoveDown:()=>x(F,1)}))),!f&&P.createElement("div",{className:o.topActions},l?P.createElement(P.Fragment,null,P.createElement(Xa,{size:"xs",className:o.linkIdInput,defaultValue:a.linkId,onChange:h=>v("linkId",h.currentTarget.value)}),!f&&P.createElement(mI,{size:"xs",className:o.typeSelect,defaultValue:a.type,onChange:h=>v("type",h.currentTarget.value),data:[{value:"display",label:"Display"},{value:"boolean",label:"Boolean"},{value:"decimal",label:"Decimal"},{value:"integer",label:"Integer"},{value:"date",label:"Date"},{value:"dateTime",label:"Date/Time"},{value:"time",label:"Time"},{value:"string",label:"String"},{value:"text",label:"Text"},{value:"url",label:"URL"},{value:"choice",label:"Choice"},{value:"open-choice",label:"Open Choice"},{value:"attachment",label:"Attachment"},{value:"reference",label:"Reference"},{value:"quantity",label:"Quantity"}]})):P.createElement("div",null,s)),!n&&P.createElement(Wa,{className:o.movementActions},P.createElement(Wa,{className:o.columnAlignment},!e.isFirst&&P.createElement(ke,{href:"#",onClick:h=>{h.preventDefault(),e.onMoveUp&&e.onMoveUp()}},P.createElement(Cr,{"data-testid":"up-button",size:15,className:o.movementIcons})),!e.isLast&&P.createElement(ke,{href:"#",onClick:h=>{h.preventDefault(),e.onMoveDown&&e.onMoveDown()}},P.createElement(hr,{"data-testid":"down-button",size:15,className:o.movementIcons})))),P.createElement("div",{className:o.bottomActions},f&&P.createElement(P.Fragment,null,P.createElement(ke,{href:"#",onClick:h=>{h.preventDefault(),y({id:co(),linkId:Ka("q"),type:"string",text:"Question"})}},"Add item"),P.createElement(ke,{href:"#",onClick:h=>{h.preventDefault(),y({id:co(),linkId:Ka("g"),type:"group",text:"Group"})}},"Add group")),n&&P.createElement(ke,{href:"#",onClick:h=>{h.preventDefault(),y(TI())}},"Add Page"),l&&!n&&P.createElement(P.Fragment,null,P.createElement(ke,{href:"#",onClick:h=>{h.preventDefault(),e.onRepeatable&&e.onRepeatable(a)}},a.repeats?"Remove Repeatable":"Make Repeatable"),P.createElement(ke,{href:"#",onClick:h=>{h.preventDefault(),e.onRemove&&e.onRemove()}},"Remove"))))}function vI(e){let o=gI("QuestionnaireItemAnswerOption","value[x]"),t=e.item.answerOption??[];return P.createElement("div",null,e.item.answerValueSet!==void 0?P.createElement(Xa,{placeholder:"Enter Value Set",defaultValue:e.item.answerValueSet,onChange:r=>e.onChange({...e.item,answerValueSet:r.target.value})}):P.createElement(SI,{options:t,property:o,item:e.item,onChange:e.onChange}),P.createElement(Wa,{display:"flex"},P.createElement(ke,{href:"#",onClick:r=>{V(r),e.onChange({...e.item,answerValueSet:void 0,answerOption:[...t,{id:co()}]})}},"Add choice"),P.createElement(pI,{w:"lg"}),P.createElement(ke,{href:"#",onClick:r=>{V(r),e.onChange({...e.item,answerOption:[],answerValueSet:""})}},"Add value set")))}function SI(e){return P.createElement("div",null,e.options.map(o=>{let[t,r]=Se({type:"QuestionnaireItemAnswerOption",value:o},"value");return P.createElement("div",{key:o.id,style:{display:"flex",flexDirection:"row",justifyContent:"space-between",alignItems:"center",width:"80%"}},P.createElement("div",null,P.createElement(He,{key:o.id,name:"value[x]",property:e.property,defaultPropertyType:r,defaultValue:t,onChange:(a,n)=>{let f=[...e.options],s=f.findIndex(l=>l.id===o.id);f[s]={id:o.id,[n]:a},e.onChange({...e.item,answerOption:f})}})),P.createElement("div",null,P.createElement(ke,{href:"#",onClick:a=>{V(a),e.onChange({...e.item,answerOption:e.options.filter(n=>n.id!==o.id)})}},"Remove")))}))}function bI(e){let o=or(e.item)??[];return P.createElement(P.Fragment,null,o.map((t,r)=>P.createElement(cI,{key:`${t}-${r}`},P.createElement(bo,{name:"resourceType",placeholder:"Resource Type",defaultValue:t,onChange:a=>{e.onChange(tr(e.item,o.map(n=>n===t?a:n)))}}),P.createElement(ke,{href:"#",onClick:a=>{V(a),e.onChange(tr(e.item,o.filter(n=>n!==t)))}},"Remove"))),P.createElement(ke,{href:"#",onClick:t=>{V(t),e.onChange(tr(e.item,[...o,""]))}},"Add Resource Type"))}var Ja=1,$a=1;function Ka(e){return e+Ja++}function co(){return"id-"+$a++}function PI(e){return{...e,id:e.id||co(),item:ns(e.item)}}function ns(e){if(e)return e.forEach(o=>{o.id?.match(/^id-\d+$/)&&($a=Math.max($a,parseInt(o.id.substring(3),10)+1)),o.linkId?.match(/^q\d+$/)&&(Ja=Math.max(Ja,parseInt(o.linkId.substring(1),10)+1))}),e.map(o=>({...o,id:o.id||co(),item:ns(o.item),answerOption:DI(o.answerOption)}))}function DI(e){if(e)return e.map(o=>({...o,id:o.id||co()}))}function TI(){return{id:co(),linkId:Ka("s"),type:"group",text:"New Page",extension:[{url:"http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl",valueCodeableConcept:{coding:[{system:"http://hl7.org/fhir/questionnaire-item-control",code:"page"}]}}]}}function kI(e,o,t){let r=e??[],a=o+t;if(a<0||a>=r.length)return r;let n=[...r];return[n[o],n[a]]=[n[a],n[o]],n}import{Anchor as is,Button as Ho,Group as BI,Stack as AI,Stepper as fs,Title as us}from"@mantine/core";import{createReference as MI,getExtension as FI,getReferenceString as ds}from"@medplum/core";import E,{useEffect as ls,useState as Vo}from"react";function cs(e){let o=S(),t=o.getProfile(),[r,a]=Vo(!1),n=X(e.questionnaire),[f,s]=Vo(),[l,i]=Vo(0),u=NI(n?.item??[]),d=()=>i(y=>y>=u?y:y+1),c=()=>i(y=>y<=0?y:y-1);ls(()=>{o.requestSchema("Questionnaire").then(()=>o.requestSchema("QuestionnaireResponse")).then(()=>a(!0)).catch(console.log)},[o]),ls(()=>{s(n?OI(n):void 0)},[n]);function g(y){let A=f?.item??[],D={resourceType:"QuestionnaireResponse",item:xs(A,y)};s(D)}return!r||!n?null:E.createElement($,{testid:"questionnaire-form",onSubmit:()=>{e.onSubmit&&f&&e.onSubmit({...f,questionnaire:ds(n),subject:e.subject,source:MI(t),authored:new Date().toISOString(),status:"completed"})}},n.title&&E.createElement(us,null,n.title),n.item&&E.createElement(ms,{items:n.item??[],allResponses:f?.item??[],onChange:g,renderPages:u>1,activePage:l}),E.createElement(BI,{position:"right",mt:"xl"},E.createElement(wI,{activePage:l,numberOfPages:u,nextStep:d,prevStep:c,submitButtonText:e.submitButtonText})))}function ms(e){let[o,t]=Vo(_a(e.items));function r(n,f){let s=o.some(i=>i.id===n),l;s?l=o.map(i=>i.id===n?f:i):l=[...o,f],t(l),e.onChange(l)}let a=e.items.map((n,f)=>e.renderPages?E.createElement(fs.Step,{label:n.text,key:n.linkId},E.createElement(ss,{key:`${n.linkId}-${f}`,item:n,index:f,allResponses:e.allResponses,currentResponseItems:o,groupSequence:e.groupSequence,setResponseItem:r})):E.createElement(ss,{key:`${n.linkId}-${f}`,item:n,index:f,groupSequence:e.groupSequence,allResponses:e.allResponses,currentResponseItems:o,setResponseItem:r}));return e.renderPages?E.createElement(fs,{active:e.activePage??0,allowNextStepsSelect:!1,p:6},a):E.createElement(AI,null,a)}function ss(e){return jl(e.item,e.allResponses)?e.item.type==="display"?E.createElement("p",{key:e.item.linkId},e.item.text):e.item.type==="group"?E.createElement(ja,{key:e.item.linkId,item:e.item,allResponses:e.allResponses,currentResponseItems:e.currentResponseItems,groupSequence:e.groupSequence,onChange:o=>e.setResponseItem(o.id,o)}):e.item.type==="boolean"?E.createElement(ja,{item:e.item,allResponses:e.allResponses,currentResponseItems:e.currentResponseItems,groupSequence:e.groupSequence,onChange:o=>e.setResponseItem(o.id,o)}):E.createElement(be,{key:e.item.linkId,htmlFor:e.item.linkId,title:e.item.text},E.createElement(ja,{item:e.item,allResponses:e.allResponses,currentResponseItems:e.currentResponseItems,groupSequence:e.groupSequence,onChange:o=>e.setResponseItem(o.id,o)})):null}function ja(e){let o=e.item;function t(r,a){let n=a??0,f=e.currentResponseItems.filter(s=>s.linkId===o.linkId);e.onChange({id:qI(f,n),linkId:o.linkId,text:o.text,item:r})}return o.type==="group"?E.createElement(HI,{key:e.item.linkId,text:o.text??"",item:o??[],allResponses:e.allResponses,onChange:t}):E.createElement(VI,{item:e.item,key:e.item.linkId},({index:r})=>E.createElement(rr,{...e,index:r}))}function wI(e){return e.activePage===0&&e.numberOfPages<=0?E.createElement(Ho,{type:"submit"},e.submitButtonText??"OK"):e.activePage>=e.numberOfPages?E.createElement(E.Fragment,null,E.createElement(Ho,{onClick:e.prevStep},"Back"),E.createElement(Ho,{onClick:e.nextStep,type:"submit"},e.submitButtonText??"OK")):e.activePage===0?E.createElement(E.Fragment,null,E.createElement(Ho,{onClick:e.nextStep},"Next")):E.createElement(E.Fragment,null,E.createElement(Ho,{onClick:e.prevStep},"Back"),E.createElement(Ho,{onClick:e.nextStep},"Next"))}function OI(e){return{resourceType:"QuestionnaireResponse",questionnaire:ds(e),item:_a(e.item)}}function _a(e){return e?.map(EI)??[]}function EI(e){return{id:ps(),linkId:e.linkId,text:e.text,item:_a(e.item),answer:e.initial?.map(RI)??[]}}var LI=1;function ps(){return"id-"+LI++}function RI(e){return{...e}}function NI(e){return e.filter(t=>FI(t,"http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl")?.valueCodeableConcept?.coding?.[0]?.code==="page").length>0?e.length:0}function HI(e){let[o,t]=Vo(GI(e.item,e.allResponses)),r=e.item;return E.createElement(E.Fragment,null,[...Array(o)].map((a,n)=>E.createElement("div",{key:n},e.text&&E.createElement(us,{order:3},e.text),E.createElement(ms,{items:r.item??[],allResponses:e.allResponses,groupSequence:n,onChange:f=>e.onChange(f,n)}))),e.item.repeats&&E.createElement(is,{onClick:()=>t(a=>a+1)},"Add Group"))}function VI(e){let[o,t]=Vo(1),r=e.item?.repeats&&e.item.type!=="choice"&&e.item.type!=="open-choice";return E.createElement(E.Fragment,null,[...Array(o)].map((a,n)=>E.createElement(E.Fragment,{key:`${e.item.linkId}-${n}`},e.children({index:n}))),r&&E.createElement(is,{onClick:()=>t(a=>a+1)},"Add Item"))}function qI(e,o){return e.length===0||e.length<o+1?ps():e[o].id}function GI(e,o){let t=o.filter(r=>r.linkId===e.linkId).length;return t>0?t:1}function UI(e,o){let t=xs(e.item??[],o.item??[]);return{...o,item:t,answer:o.answer&&o.answer.length>0?o.answer:e.answer}}function QI(e,o){let t=[],r=Math.max(e.length,o.length);for(let a=0;a<r;a++)e[a]&&o[a]?t.push(UI(e[a],o[a])):o[a]&&t.push(o[a]);return t}function xs(e,o){let t=[];for(let r of new Set(o.map(a=>a.linkId))){let a=e.filter(f=>f.linkId===r),n=o.filter(f=>f.linkId===r);t=t.concat(QI(a,n))}return t}import{ActionIcon as nr,Button as zI,createStyles as WI,Divider as XI,Group as mt,NativeSelect as Za,Stack as fr,Text as JI,TextInput as $I}from"@mantine/core";import{formatRange as Is,getCodeBySystem as KI}from"@medplum/core";import z,{useEffect as jI,useState as Ya}from"react";var _I=WI(e=>({section:{position:"relative",margin:"4px 4px 8px 0",padding:"6px 12px 16px 6px",border:`1.5px solid ${e.colors.gray[3]}`,borderRadius:e.radius.sm,transition:"all 0.1s"}})),ZI=["gender","age","gestationalAge","context","appliesTo","category"],YI={definition:{resourceType:"ObservationDefinition"},onSubmit:()=>{}};function Vw(e){e=Object.assign(YI,e);let o=e.definition,[t,r]=Ya([]),[a,n]=Ya(1),[f,s]=Ya(1);return jI(()=>{let y=tg(o,s);r(rg(y.qualifiedInterval||[],n))},[o]),z.createElement($,{testid:"reference-range-editor",onSubmit:l},z.createElement(fr,null,t.map(y=>z.createElement(eg,{unit:ng(o.quantitativeDetails?.unit),onChange:d,onAdd:c,onRemove:g,onRemoveGroup:u,key:`group-${y.id}`,intervalGroup:y}))),z.createElement(nr,{title:"Add Group",size:"sm",onClick:y=>{V(y),i({id:`group-id-${a}`,filters:{},intervals:[]}),n(A=>A+1)}},z.createElement(po,null)),z.createElement(mt,{position:"right"},z.createElement(zI,{type:"submit"},"Save")));function l(){let y=t.flatMap(A=>A.intervals).filter(A=>!fg(A));e.onSubmit({...o,qualifiedInterval:y})}function i(y){r(A=>[...A,y])}function u(y){r(A=>A.filter(v=>v.id!==y.id))}function d(y,A){r(v=>{v=[...v];let D=v.find(x=>x.id===y),B=D?.intervals.findIndex(x=>x.id===A.id);return B!==void 0&&D?.intervals[B]&&(D.intervals[B]=A),v})}function c(y,A){A.id===void 0&&(A.id=`id-${f}`,s(v=>v+1)),r(v=>{v=[...v];let D=v.findIndex(B=>B.id===y);if(D!==-1){let B={...v[D]};A={...A,...B.filters},B.intervals=[...B.intervals,A],v[D]=B}return v})}function g(y,A){r(v=>{v=[...v];let D=v.find(B=>B.id===y);return D&&(D.intervals=D.intervals.filter(B=>B.id!==A.id)),v})}}function eg(e){let{intervalGroup:o,unit:t}=e,{classes:r}=_I();return z.createElement(Ke,{"data-testid":o.id,className:r.section},z.createElement(fr,{spacing:"lg"},z.createElement(mt,{position:"right"},z.createElement(nr,{title:"Remove Group","data-testid":`remove-group-button-${o.id}`,key:`remove-group-button-${o.id}`,size:"sm",onClick:a=>{V(a),e.onRemoveGroup(o)}},z.createElement(ze,null))),z.createElement(og,{intervalGroup:o,onChange:e.onChange}),z.createElement(XI,null),o.intervals.map(a=>z.createElement(fr,{key:`interval-${a.id}`,spacing:"xs"},z.createElement(mt,null,z.createElement($I,{key:`condition-${a.id}`,"data-testid":`condition-${a.id}`,defaultValue:a.condition,label:"Condition: ",size:"sm",onChange:n=>{V(n),e.onChange(o.id,{...a,condition:n.currentTarget.value.trim()})}}),z.createElement(nr,{title:"Remove Interval",size:"sm",key:`remove-interval-${a.id}`,"data-testid":`remove-interval-${a.id}`,onClick:n=>{V(n),e.onRemove(o.id,a)}},z.createElement(ze,null))),z.createElement(at,{onChange:n=>{e.onChange(o.id,{...a,range:n})},key:`range-${a.id}`,name:`range-${a.id}`,defaultValue:a.range}))),z.createElement(nr,{title:"Add Interval",size:"sm",onClick:a=>{V(a),e.onAdd(o.id,{range:{low:{unit:t},high:{unit:t}}})}},z.createElement(po,null))))}function og(e){let{intervalGroup:o,onChange:t}=e;o.filters.age||(o.filters.age={});for(let r of["low","high"])o.filters.age[r]?.unit||(o.filters.age[r]={...o.filters.age[r],unit:"years",system:"http://unitsofmeasure.org"});return z.createElement(fr,{style:{maxWidth:"50%"}},z.createElement(mt,null,z.createElement(Za,{data:["","male","female"],label:"Gender:",defaultValue:o.filters.gender||"",onChange:r=>{for(let a of o.intervals){let n=r.currentTarget.value;n===""&&(n=void 0),t(o.id,{...a,gender:n})}}})),z.createElement(mt,{spacing:"xs"},z.createElement(JI,{component:"label",htmlFor:`div-age-${o.id}`},"Age:"),z.createElement("div",{id:`div-age-${o.id}`},z.createElement(at,{key:`age-${o.id}`,name:`age-${o.id}`,defaultValue:o.filters.age,onChange:r=>{for(let a of o.intervals)t(o.id,{...a,age:r})}}))),z.createElement(Za,{data:["","pre-puberty","follicular","midcycle","luteal","postmenopausal"],label:"Endocrine:",defaultValue:o.filters.context?.text||"",onChange:r=>{for(let a of o.intervals){let n=r.currentTarget.value;n===""?(n=void 0,t(o.id,{...a,context:void 0})):t(o.id,{...a,context:{text:n,coding:[{code:n,system:"http://terminology.hl7.org/CodeSystem/referencerange-meaning"}]}})}}}),z.createElement(Za,{data:["","reference","critical","absolute"],label:"Category: ",defaultValue:o.filters.category,onChange:r=>{for(let a of o.intervals){let n=r.currentTarget.value;n===""?t(o.id,{...a,category:void 0}):t(o.id,{...a,category:n})}}}))}function tg(e,o){let t=e.qualifiedInterval||[],r=Math.max(...t.map(a=>{let n=parseInt(a.id?.substring(3)||"",10);return isNaN(n)?Number.NEGATIVE_INFINITY:n}))+1;return Number.isFinite(r)||(r=1),e={...e,qualifiedInterval:t.map(a=>({...a,id:a.id||`id-${r++}`}))},o(r),e}function rg(e,o){let t=1,r={};for(let a of e){let n=ag(a);n in r||(r[n]={id:`group-id-${t++}`,filters:Object.fromEntries(ZI.map(f=>[f,a[f]])),intervals:[]}),r[n].intervals.push(a)}return o(t),Object.values(r)}function ag(e){return[`gender=${e.gender}`,`age=${Is(e.age)}`,`gestationalAge=${Is(e.gestationalAge)}`,`context=${e.context?.text}`,`appliesTo=${e.appliesTo?.map(t=>t.text).join("+")}`,`category=${e.category}`].join(":")}function ng(e){return e&&(KI(e,"http://unitsofmeasure.org")||e.text)}function fg(e){return e.range?.low?.value===void 0&&e.range?.high?.value===void 0}import{Button as gs,Grid as lr,Text as lg}from"@mantine/core";import{formatDateTime as sg,getReferenceString as ig}from"@medplum/core";import ge,{useEffect as ug,useState as hs}from"react";function Kw(e){let o=S(),t=X(e.value),[r,a]=hs(!1),[n,f]=hs();if(ug(()=>{t&&!r&&(o.executeBatch(s(t)).then(f).catch(console.log),a(!0))},[o,t,r]),!t||!n)return null;return ge.createElement(lr,null,t.action?.map((i,u)=>{let d=i.resource&&l(i.resource),c=d?.input?.[0]?.valueReference,g=d?.output?.[0]?.valueReference;return ge.createElement(ge.Fragment,{key:`action-${u}`},ge.createElement(lr.Col,{span:1,p:"md"},d?.status==="completed"?ge.createElement(Tr,null):ge.createElement(zr,{color:"gray"})),ge.createElement(lr.Col,{span:9,p:"xs"},ge.createElement(lg,{weight:500},i.title),i.description&&ge.createElement("div",null,i.description),ge.createElement("div",null,"Last edited by\xA0",ge.createElement(Le,{value:d?.meta?.author}),"\xA0on\xA0",sg(d?.meta?.lastUpdated)),ge.createElement("div",null,"Status: ",ge.createElement(Vt,{status:d?.status||"unknown"}))),ge.createElement(lr.Col,{span:2,p:"md"},c&&!g&&ge.createElement(gs,{onClick:()=>e.onStart(d,c)},"Start"),c&&g&&ge.createElement(gs,{onClick:()=>e.onEdit(d,c,g)},"Edit")))}));function s(i){let u=[];if(i.action)for(let d of i.action)d.resource?.reference&&u.push({request:{method:"GET",url:d.resource.reference}});return{resourceType:"Bundle",type:"batch",entry:u}}function l(i){for(let u of n?.entry)if(u.resource&&i.reference===ig(u.resource))return u.resource}}import{createStyles as gg}from"@mantine/core";import ve,{useEffect as hg,useState as Cg}from"react";import{stringify as pg}from"@medplum/core";function sr(e,o){let t=dg(e,o);return cg(t,e,o)}function dg(e,o){let t=e.length,r=o.length,a=t+r+1,n=1+2*a,f=n/2|0,s=new Array(n);s[f+1]={i:0,j:-1,prev:void 0,snake:!0};for(let l=0;l<a;l++){for(let i=-l;i<=l;i+=2){let u=f+i,d=u+1,c=u-1,g=s[d],y=s[c],A,v=0;i===-l||i!==l&&y.i<g.i?(v=g.i,A=g):(v=y.i+1,A=y),s[c]=void 0;let D=v-i,B={i:v,j:D,prev:mg(A),snake:!1};for(;v<t&&D<r&&e[v]===o[D];)v++,D++;if(v>B.i&&(B={i:v,j:D,prev:B,snake:!0}),s[u]=B,v>=t&&D>=r)return s[u]}s[f+l-1]=void 0}}function cg(e,o,t){let r=[],a=e;for(a.snake&&(a=a.prev);a?.prev&&a.prev.j>=0;){let n=a.i,f=a.j;a=a.prev;let s=a.i,l=a.j,i={position:s,lines:o.slice(s,n)},u={position:l,lines:t.slice(l,f)},d;i.lines.length===0&&u.lines.length>0?d="insert":i.lines.length>0&&u.lines.length===0?d="delete":d="change",r.push({original:i,revised:u,type:d}),a.snake&&(a=a.prev)}return r}function mg(e){return e&&!e.snake&&e.prev?e.prev:e}function Cs(e){let o=e.entry.filter(r=>!!r.resource).map(r=>({meta:r.resource?.meta,lines:pg(r.resource,!0).match(/[^\r\n]+/g)})).sort((r,a)=>r.meta.lastUpdated.localeCompare(a.meta.lastUpdated)),t=o[0].lines.map(r=>({id:o[0].meta.versionId,meta:o[0].meta,value:r,span:1}));return xg(t,o),Ig(t),t}function xg(e,o){for(let t=1;t<o.length;t++){let r=sr(o[t-1].lines,o[t].lines);for(let a of r){let n=a.original.position,f=a.original.lines,s=a.revised.lines;if((a.type==="delete"||a.type==="change")&&e.splice(n,f.length),a.type==="insert"||a.type==="change")for(let l=0;l<a.revised.lines.length;l++)e.splice(n+l,0,{id:o[t].meta.versionId,meta:o[t].meta,value:s[l],span:1})}}}function Ig(e){let o=0;for(;o<e.length;){let t=o;for(;t<e.length&&e[t].id===e[o].id;)e[t].span=-1,t++;e[o].span=t-o,o=t}}var yg=gg(e=>({container:{overflowX:"auto"},root:{border:`0.1px solid ${e.colors.gray[3]}`,borderCollapse:"collapse",borderRadius:e.radius.sm,borderSpacing:0,fontSize:e.fontSizes.xs,width:"100%","& td":{padding:"2px 4px 0 4px",verticalAlign:"top",whiteSpace:"nowrap"}},startRow:{borderTop:`0.1px solid ${e.colors.gray[3]}`},normalRow:{borderTop:0},author:{lineHeight:"10px"},dateTime:{borderRight:`0.1px solid ${e.colors.gray[3]}`,lineHeight:"20px"},lineNumber:{backgroundColor:e.colors.gray[1],border:0,color:e.colors.gray[5],fontFamily:e.fontFamilyMonospace,padding:`${e.spacing.xs} ${e.spacing.sm}`,textAlign:"right"},line:{fontFamily:e.fontFamilyMonospace,fontSize:e.fontSizes.sm,padding:`${e.spacing.xs} ${e.spacing.sm}`},pre:{margin:0}}));function lO(e){let{classes:o}=yg(),t=S(),[r,a]=Cg(e.history);if(hg(()=>{!e.history&&e.resourceType&&e.id&&t.readHistory(e.resourceType,e.id).then(a).catch(console.log)},[t,e.history,e.resourceType,e.id]),!r)return ve.createElement("div",null,"Loading...");let n=r.entry?.[0]?.resource;if(!n)return null;let f=Cs(r);return ve.createElement("div",{className:o.container},ve.createElement("table",{className:o.root},ve.createElement("tbody",null,f.map((s,l)=>ve.createElement("tr",{key:"row-"+l,className:s.span>0?o.startRow:o.normalRow},s.span>0&&ve.createElement(ve.Fragment,null,ve.createElement("td",{className:o.author,rowSpan:s.span},ve.createElement(je,{value:s.meta.author,link:!0})),ve.createElement("td",{className:o.dateTime,rowSpan:s.span},ve.createElement(se,{to:vg(n,s.meta.versionId)},Sg(s.meta.lastUpdated)))),ve.createElement("td",{className:o.lineNumber},l+1),ve.createElement("td",{className:o.line},ve.createElement("pre",{className:o.pre},s.value)))))))}function vg(e,o){return`/${e.resourceType}/${e.id}/_history/${o}`}function Sg(e){let o=Math.floor((Date.now()-Date.parse(e))/1e3),t=Math.floor(o/31536e3);if(t>0)return qo(t,"year");let r=Math.floor(o/2592e3);if(r>0)return qo(r,"month");let a=Math.floor(o/86400);if(a>0)return qo(a,"day");let n=Math.floor(o/3600);if(n>0)return qo(n,"hour");let f=Math.floor(o/60);return f>0?qo(f,"minute"):qo(o,"second")}function qo(e,o){return`${e} ${e===1?o:o+"s"} ago`}import{createStyles as bg}from"@mantine/core";import{stringify as ys}from"@medplum/core";import eo from"react";var Pg=bg(e=>({removed:{color:e.colors.red[7],textDecoration:"line-through"},added:{color:e.colors.green[7]}}));function pO(e){let o=e.original,t=e.revised;e.ignoreMeta&&(o={...o,meta:void 0},t={...t,meta:void 0});let r=ys(o,!0).match(/[^\r\n]+/g),a=ys(t,!0).match(/[^\r\n]+/g),n=sr(r,a);return eo.createElement("pre",{style:{color:"gray"}},n.map((f,s)=>eo.createElement(Dg,{key:"delta"+s,delta:f})))}function Dg(e){let{classes:o}=Pg();return eo.createElement(eo.Fragment,null,"...",eo.createElement("br",null),e.delta.original.lines.length>0&&eo.createElement("div",{className:o.removed},e.delta.original.lines.join(`
64
+ }`.replace(/\s+/g," ")}function Yi(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),ou(eu(t),o).slice(0,5)}function eu(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 ou(e,o){return e.sort((t,r)=>On(r,o)-On(t,o))}function On(e,o){let t=0;if(e.identifier)for(let r of e.identifier)t=Math.max(t,En(r.value,o));if(e.resourceType==="Patient"&&e.name)for(let r of e.name)t=Math.max(t,En(zi(r),o));return t}function En(e,o){if(!e)return 0;let t=e.toLowerCase().indexOf(o.toLowerCase());return t<0?0:100-t}var su=ru(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 Vn(e){let o=Qo(),{medplum:t,profile:r,navigate:a}=o,n=t.getLogins(),{classes:f,cx:s}=su(),[l,i]=lu(!1);return U.createElement(au,{height:60,p:8,style:{zIndex:101}},U.createElement(Ct,{position:"apart"},U.createElement(Ct,{spacing:"xs"},U.createElement(Nn,{className:f.logoButton,onClick:e.navbarToggle},e.logo),!e.headerSearchDisabled&&U.createElement(Rn,{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(Nn,{className:s(f.user,{[f.userActive]:l}),onClick:()=>i(u=>!u)},U.createElement(Ct,{spacing:7},U.createElement(ge,{value:r,radius:"xl",size:24}),U.createElement($o,{size:"sm",className:f.userName},fu(r?.name?.[0])),U.createElement(Ar,{size:12,stroke:1.5})))),U.createElement(He.Dropdown,null,U.createElement(nu,{align:"center",p:"xl"},U.createElement(ge,{size:"xl",radius:100,value:o.profile}),U.createElement(gt,{value:o.profile?.name?.[0]}),U.createElement($o,{color:"dimmed",size:"xs"},t.getActiveLogin()?.project.display)),n.length>1&&U.createElement(He.Divider,null),n.map(u=>u.profile.reference!==Hn(o.profile)&&U.createElement(He.Item,{key:u.profile.reference,onClick:()=>{t.setActiveLogin(u).then(()=>window.location.reload()).catch(console.log)}},U.createElement(Ct,null,U.createElement(tu,{radius:"xl"}),U.createElement("div",{style:{flex:1}},U.createElement($o,{size:"sm",weight:500},u.profile.display),U.createElement($o,{color:"dimmed",size:"xs"},u.project.display))))),U.createElement(He.Divider,null),U.createElement(He.Item,{icon:U.createElement(Jr,{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(`/${Hn(r)}`)},"Account settings"),U.createElement(He.Item,{icon:U.createElement(Vr,{size:14,stroke:1.5}),onClick:async()=>{await t.signOut(),a("/signin")}},"Sign out"),U.createElement($o,{size:"xs",color:"dimmed",align:"center"},e.version)))))}import{Button as Ou,createStyles as Eu,Navbar as ea,ScrollArea as Lu,Space as Ru,Text as Nu}from"@mantine/core";import le,{useState as Hu}from"react";import{Button as cu,Group as mu,Modal as pu,NativeSelect as xu,Stack as Iu,TextInput as gu}from"@mantine/core";import{showNotification as Gn}from"@mantine/notifications";import{deepClone as hu,normalizeErrorString as Cu}from"@medplum/core";import Je from"react";import du from"react";function qn(e){let o={};for(let t of Array.from(e.elements))t instanceof HTMLInputElement?iu(o,t):t instanceof HTMLTextAreaElement?o[t.name]=t.value:t instanceof HTMLSelectElement&&uu(o,t);return o}function iu(e,o){o.disabled||(o.type==="checkbox"||o.type==="radio")&&!o.checked||(e[o.name]=o.value)}function uu(e,o){e[o.name]=o.value}function K(e){return du.createElement("form",{style:e.style,"data-testid":e.testid,onSubmit:o=>{o.preventDefault();let t=qn(o.target);e.onSubmit&&e.onSubmit(t)}},e.children)}function Un(e){let o=v(),t=o.getUserConfiguration();function r(a){let{menuname:n,bookmarkname:f}=a,s=`${e.pathname}?${e.searchParams.toString()}`,l=hu(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"}),Gn({color:"green",message:"Success"}),e.onOk()}).catch(u=>{Gn({color:"red",message:Cu(u)})})}return Je.createElement(pu,{title:"Add Bookmark",closeButtonProps:{"aria-label":"Close"},opened:e.visible,onClose:e.onCancel},Je.createElement(K,{onSubmit:r},Je.createElement(Iu,null,Je.createElement(yu,{config:t}),Je.createElement(gu,{label:"Bookmark Name",type:"text",name:"bookmarkname",placeholder:"Bookmark Name",withAsterisk:!0}),Je.createElement(mu,{position:"right"},Je.createElement(cu,{mt:"sm",type:"submit"},"OK")))))}function yu(e){function o(r){return r?.menu?.map(a=>a.title)}let t=o(e.config);return Je.createElement(xu,{name:"menuname",defaultValue:t[0],label:"Select Menu Option",placeholder:"Menu",data:t,withAsterisk:!0})}import Fu,{useCallback as Mu,useState as wu}from"react";import Du,{useState as ku}from"react";import vu,{useCallback as Su}from"react";function Yr(e){return typeof e.code=="string"?e.code:JSON.stringify(e)}function bu(e){return typeof e.display=="string"?e.display:Yr(e)}function Pu(e){return{value:Yr(e),label:bu(e),resource:e}}function Tu(e){return{code:e,display:e}}function bo(e){let o=v(),{binding:t,creatable:r,clearable:a,...n}=e,f=Su(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 vu.createElement(So,{...n,creatable:r??!0,clearable:a??!0,toKey:Yr,toOption:Pu,loadOptions:f,onCreate:Tu,getCreateLabel:r===!1?void 0:s=>`+ Create ${s}`})}function yt(e){let[o,t]=ku(e.defaultValue);function r(a){let n=a[0],f=Au(n);t(f),e.onChange&&e.onChange(f)}return Du.createElement(bo,{binding:e.binding,name:e.name,placeholder:e.placeholder,defaultValue:Bu(o),onChange:r,creatable:e.creatable,maxSelectedValues:e.maxSelectedValues??1,clearSearchOnChange:e.clearSearchOnChange,clearable:e.clearable})}function Bu(e){return e?{code:e}:void 0}function Au(e){return e?.code}function Po(e){let[o,t]=wu(e.defaultValue),r=e.onChange,a=Mu(n=>{t(n),r&&r(n)},[r]);return Fu.createElement(yt,{"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 Qn=Eu(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 zn(e){let{classes:o}=Qn(),t=ze(),r=Gu(e.pathname,e.searchParams,e.menus),[a,n]=Hu(!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(ea,{width:{sm:250},p:"xs"},le.createElement(Lu,null,!e.resourceTypeSearchDisabled&&le.createElement(ea.Section,{mb:"sm"},le.createElement(Po,{key:window.location.pathname,name:"resourceType",placeholder:"Resource Type",onChange:l=>s(l)})),le.createElement(ea.Section,{grow:!0},e.menus?.map(l=>le.createElement(le.Fragment,{key:`menu-${l.title}`},le.createElement(Nu,{className:o.menuTitle},l.title),l.links?.map(i=>le.createElement(Vu,{key:i.href,to:i.href,active:i.href===r?.href,onClick:u=>f(u,i.href)},le.createElement(qu,{to:i.href,icon:i.icon}),le.createElement("span",null,i.label))))),e.displayAddBookmark&&le.createElement(Ou,{variant:"subtle",size:"xs",mt:"xl",leftIcon:le.createElement(Qr,{size:"0.75rem"}),onClick:()=>n(!0)},"Add Bookmark")))),e.pathname&&e.searchParams&&le.createElement(Un,{pathname:e.pathname,searchParams:e.searchParams,visible:a,onOk:()=>n(!1),onCancel:()=>n(!1)}))}function Vu(e){let{classes:o,cx:t}=Qn();return le.createElement(se,{onClick:e.onClick,to:e.to,className:t(o.link,{[o.linkActive]:e.active})},e.children)}function qu(e){return e.icon?e.icon:le.createElement(Ru,{w:30})}function Gu(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=Uu(e,o,f.href);s>a&&(a=s,r=f)}return r}function Uu(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 wb(e){let o=zu(),[t,r]=Xu(localStorage.navbarOpen==="true"),a=v(),n=mt();function f(i){localStorage.navbarOpen=i.toString(),r(i)}function s(){f(!1)}function l(){f(!t)}return a.isLoading()?ao.createElement(_r,null):ao.createElement(Qu,{styles:{main:{background:o.colorScheme==="dark"?o.colors.dark[8]:o.colors.gray[0]}},padding:0,fixed:!0,header:n&&ao.createElement(Vn,{pathname:e.pathname,searchParams:e.searchParams,headerSearchDisabled:e.headerSearchDisabled,logo:e.logo,version:e.version,navbarToggle:l}),navbar:n&&t?ao.createElement(zn,{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(Wu,{fallback:ao.createElement(_r,null)},e.children)))}import oa from"react";import{Anchor as Ju}from"@mantine/core";import Ke from"react";function Oe(e){let o=e.value,{contentType:t,url:r,title:a}=o??{};return r?Ke.createElement("div",{"data-testid":"attachment-display"},t?.startsWith("image/")&&Ke.createElement("img",{"data-testid":"attachment-image",style:{maxWidth:e.maxWidth},src:r,alt:o?.title}),t?.startsWith("video/")&&Ke.createElement("video",{"data-testid":"attachment-video",style:{maxWidth:e.maxWidth},controls:!0},Ke.createElement("source",{type:t,src:r})),t==="application/pdf"&&!a?.endsWith(".pdf")&&Ke.createElement("div",{"data-testid":"attachment-pdf",style:{maxWidth:e.maxWidth,minHeight:400}},Ke.createElement("iframe",{width:"100%",height:"400",src:r+"#navpanes=0",allowFullScreen:!0,frameBorder:0,seamless:!0})),Ke.createElement("div",{"data-testid":"download-link",style:{padding:"2px 16px 16px 16px"}},Ke.createElement(Ju,{href:o?.url,"data-testid":"attachment-details",target:"_blank",rel:"noopener noreferrer"},o?.title||"Download"))):null}function Wn(e){return oa.createElement("div",null,e.values?.map((o,t)=>oa.createElement("div",{key:"attatchment-"+t},oa.createElement(Oe,{value:o,maxWidth:e.maxWidth}))))}import{ActionIcon as Xn}from"@mantine/core";import ie,{useRef as $u,useState as ju}from"react";import ta,{useRef as Ku}from"react";function To(e){let o=v(),t=Ku(null);function r(f){H(f),t.current?.click()}function a(f){H(f);let s=f.target.files;s&&Array.from(s).forEach(n)}function n(f){if(!f||!f.name)return;e.onUploadStart&&e.onUploadStart();let l=f.name,i=f.type||"application/octet-stream";o.createBinary(f,l,i,e.onUploadProgress).then(u=>{e.onUpload({contentType:u.contentType,url:u.url,title:l})}).catch(u=>{alert(u.issue?.[0]?.details?.text)})}return ta.createElement(ta.Fragment,null,ta.createElement("input",{type:"file","data-testid":"upload-file-input",style:{display:"none"},ref:t,onChange:f=>a(f)}),e.children({onClick:r}))}function Jn(e){let[o,t]=ju(e.defaultValue??[]),r=$u();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(Xn,{title:"Remove",size:"sm",onClick:s=>{H(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(To,{onUpload:n=>{a([...r.current,n])}},n=>ie.createElement(Xn,{...n,title:"Add",size:"sm",color:"green"},ie.createElement(Wo,{size:16})))))))}import{Button as Kn}from"@mantine/core";import Do,{useState as _u}from"react";function vt(e){let[o,t]=_u(e.defaultValue);function r(a){t(a),e.onChange&&e.onChange(a)}return o?Do.createElement(Do.Fragment,null,Do.createElement(Oe,{value:o,maxWidth:200}),Do.createElement(Kn,{onClick:a=>{H(a),r(void 0)}},"Remove")):Do.createElement(To,{onUpload:r},a=>Do.createElement(Kn,{...a},"Upload..."))}import{normalizeOperationOutcome as Fd}from"@medplum/core";import At,{useEffect as Md,useState as af}from"react";import $n from"react";import{Container as Zu,createStyles as Yu}from"@mantine/core";import ed from"react";var od=Yu(()=>({root:{"@media (max-width: 800px)":{paddingLeft:4,paddingRight:4}}}));function $e(e){let{children:o,...t}=e,{classes:r}=od();return ed.createElement(Zu,{className:r.root,...t},o)}import{createStyles as td,Paper as rd,useComponentDefaultProps as ad}from"@mantine/core";import nd from"react";var fd=td((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%"}}})),ld={shadow:"xs",radius:"md",withBorder:!0};function ko(e){let{className:o,children:t,width:r,fill:a,unstyled:n,...f}=ad("Panel",ld,e),{classes:s,cx:l}=fd({width:r,fill:a},{name:"Panel",unstyled:n});return nd.createElement(rd,{className:l(s.paper,o),...f},t)}function St(e){let{children:o,...t}=e;return $n.createElement($e,null,$n.createElement(ko,{...t},o))}import{Anchor as _n,Button as sd,Center as id,Group as ud,Stack as dd,Text as cd,TextInput as md,Title as pd}from"@mantine/core";import{normalizeOperationOutcome as xd}from"@medplum/core";import Be,{useState as Id}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 me(e,o){return e?.issue?.filter(t=>jn(t.expression?.[0],o))?.map(t=>t.details?.text)?.join(`
65
+ `)}function bt(e,o){return e?.issue?.filter(t=>jn(t.expression?.[0],o))}function jn(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 Pt(e){let o=v(),[t,r]=Id();return Be.createElement(K,{style:{maxWidth:400},onSubmit:async a=>{try{e.handleAuthResponse(await o.startNewProject({login:e.login,projectName:a.projectName}))}catch(n){r(xd(n))}}},Be.createElement(id,{sx:{flexDirection:"column"}},Be.createElement(je,{size:32}),Be.createElement(pd,null,"Create project")),Be.createElement(dd,{spacing:"xl"},Be.createElement(md,{name:"projectName",label:"Project Name",placeholder:"My Project",required:!0,autoFocus:!0,error:me(t,"firstName")}),Be.createElement(cd,{color:"dimmed",size:"xs"},"By clicking submit you agree to the Medplum"," ",Be.createElement(_n,{href:"https://www.medplum.com/privacy"},"Privacy\xA0Policy")," and ",Be.createElement(_n,{href:"https://www.medplum.com/terms"},"Terms\xA0of\xA0Service"),".")),Be.createElement(ud,{position:"right",mt:"xl",noWrap:!0},Be.createElement(sd,{type:"submit"},"Create project")))}import{Anchor as Bt,Button as Sd,Center as bd,Checkbox as Pd,Divider as Td,Group as ef,PasswordInput as Dd,Stack as kd,Text as of,TextInput as na}from"@mantine/core";import{normalizeOperationOutcome as tf}from"@medplum/core";import _,{useEffect as Bd,useState as Ad}from"react";import gd,{useEffect as hd,useRef as Cd,useState as ra}from"react";function Tt(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 Dt(e){let o=v(),{googleClientId:t,handleGoogleCredential:r}=e,a=Cd(null),[n,f]=ra(typeof google<"u"),[s,l]=ra(!1),[i,u]=ra(!1);return hd(()=>{if(typeof google>"u"){Tt("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?gd.createElement("div",{ref:a}):null}function kt(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 yd}from"@mantine/core";import{operationOutcomeIssueToString as vd}from"@medplum/core";import aa from"react";function Bo(e){let o=e.outcome?.issue||e.issues;return!o||o.length===0?null:aa.createElement(yd,{icon:aa.createElement(ro,{size:16}),color:"red"},o.map(t=>aa.createElement("div",{"data-testid":"text-field-error",key:t.details?.text},vd(t))))}function Zn(e){typeof grecaptcha>"u"&&Tt("https://www.google.com/recaptcha/api.js?render="+e)}function Yn(e){return new Promise((o,t)=>{grecaptcha.ready(async()=>{try{o(await grecaptcha.execute(e,{action:"submit"}))}catch(r){t(r)}})})}function rf(e){let o=kt(e.googleClientId),t=e.recaptchaSiteKey,r=v(),[a,n]=Ad(),f=bt(a,void 0);return Bd(()=>{t&&Zn(t)},[t]),_.createElement(K,{style:{maxWidth:400},onSubmit:async s=>{try{let l="";t&&(l=await Yn(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(tf(l))}}},_.createElement(bd,{sx:{flexDirection:"column"}},e.children),_.createElement(Bo,{issues:f}),o&&_.createElement(_.Fragment,null,_.createElement(ef,{position:"center",p:"xl",style:{height:70}},_.createElement(Dt,{googleClientId:o,handleGoogleCredential:async s=>{try{e.handleAuthResponse(await r.startGoogleLogin({googleClientId:s.clientId,googleCredential:s.credential,createUser:!0}))}catch(l){n(tf(l))}}})),_.createElement(Td,{label:"or",labelPosition:"center",my:"lg"})),_.createElement(kd,{spacing:"xl"},_.createElement(na,{name:"firstName",type:"text",label:"First name",placeholder:"First name",required:!0,autoFocus:!0,error:me(a,"firstName")}),_.createElement(na,{name:"lastName",type:"text",label:"Last name",placeholder:"Last name",required:!0,error:me(a,"lastName")}),_.createElement(na,{name:"email",type:"email",label:"Email",placeholder:"name@domain.com",required:!0,error:me(a,"email")}),_.createElement(Dd,{name:"password",label:"Password",autoComplete:"off",required:!0,error:me(a,"password")}),_.createElement(of,{color:"dimmed",size:"xs"},"By clicking submit you agree to the Medplum"," ",_.createElement(Bt,{href:"https://www.medplum.com/privacy"},"Privacy\xA0Policy")," and ",_.createElement(Bt,{href:"https://www.medplum.com/terms"},"Terms\xA0of\xA0Service"),"."),_.createElement(of,{color:"dimmed",size:"xs"},"This site is protected by reCAPTCHA and the Google"," ",_.createElement(Bt,{href:"https://policies.google.com/privacy"},"Privacy\xA0Policy")," and ",_.createElement(Bt,{href:"https://policies.google.com/terms"},"Terms\xA0of\xA0Service")," apply.")),_.createElement(ef,{position:"apart",mt:"xl",noWrap:!0},_.createElement(Pd,{name:"remember",label:"Remember me",size:"xs"}),_.createElement(Sd,{type:"submit"},"Create account")))}function lT(e){let{type:o,projectId:t,clientId:r,googleClientId:a,recaptchaSiteKey:n,onSuccess:f}=e,s=v(),[l,i]=af(),[u,d]=af();Md(()=>{o==="patient"&&l&&s.startNewPatient({login:l,projectId:t}).then(x=>s.processCode(x.code)).then(()=>f()).catch(x=>d(Fd(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 At.createElement(St,{width:450},u&&At.createElement("pre",null,JSON.stringify(u,null,2)),!l&&At.createElement(rf,{projectId:t,clientId:r,googleClientId:a,recaptchaSiteKey:n,handleAuthResponse:c},e.children),l&&o==="project"&&At.createElement(Pt,{login:l,handleAuthResponse:c}))}import{showNotification as gf}from"@mantine/notifications";import{normalizeErrorString as hf}from"@medplum/core";import fo,{useCallback as la,useEffect as lc,useState as sa}from"react";import{Anchor as nf,Button as ff,Center as lf,Checkbox as wd,Divider as Od,Group as fa,PasswordInput as Ed,Stack as Ld,TextInput as Rd}from"@mantine/core";import{normalizeOperationOutcome as Nd}from"@medplum/core";import $,{useCallback as Ft,useState as sf}from"react";function uf(e){let[o,t]=sf();return o?$.createElement(Vd,{email:o,...e}):$.createElement(Hd,{setEmail:t,...e})}function Hd(e){let{setEmail:o,onRegister:t,handleAuthResponse:r,children:a,disableEmailAuth:n,...f}=e,s=v(),l=!e.disableGoogleAuth&&kt(e.googleClientId),i=Ft(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=Ft(async c=>{let x=await s.post("auth/method",{email:c.email});await i(x)||o(c.email)},[s,i,o]),d=Ft(async c=>{let x=await s.startGoogleLogin({...f,googleCredential:c.credential});await i(x)||r(x)},[s,f,i,r]);return $.createElement(K,{style:{maxWidth:400},onSubmit:u},$.createElement(lf,{sx:{flexDirection:"column"}},a),l&&$.createElement($.Fragment,null,$.createElement(fa,{position:"center",p:"xl",style:{height:70}},$.createElement(Dt,{googleClientId:l,handleGoogleCredential:d})),!n&&$.createElement(Od,{label:"or",labelPosition:"center",my:"lg"})),!n&&$.createElement(Rd,{name:"email",type:"email",label:"Email",placeholder:"name@domain.com",required:!0,autoFocus:!0}),$.createElement(fa,{position:"apart",mt:"xl",spacing:0,noWrap:!0},$.createElement("div",null,t&&$.createElement(nf,{component:"button",type:"button",color:"dimmed",onClick:t,size:"xs"},"Register")),!n&&$.createElement(ff,{type:"submit"},"Next")))}function Vd(e){let{onForgotPassword:o,handleAuthResponse:t,children:r,...a}=e,n=v(),[f,s]=sf(),l=bt(f,void 0),i=Ft(u=>{n.startLogin({...a,password:u.password,remember:u.remember==="on"}).then(t).catch(d=>s(Nd(d)))},[n,a,t]);return $.createElement(K,{style:{maxWidth:400},onSubmit:i},$.createElement(lf,{sx:{flexDirection:"column"}},r),$.createElement(Bo,{issues:l}),$.createElement(Ld,{spacing:"xl"},$.createElement(Ed,{name:"password",label:"Password",autoComplete:"off",required:!0,autoFocus:!0,error:me(f,"password")})),$.createElement(fa,{position:"apart",mt:"xl",spacing:0,noWrap:!0},o&&$.createElement(nf,{component:"button",type:"button",color:"dimmed",onClick:o,size:"xs"},"Forgot password"),$.createElement(wd,{id:"remember",name:"remember",label:"Remember me",size:"xs",sx:{lineHeight:1}}),$.createElement(ff,{type:"submit"},"Sign in")))}import{Avatar as qd,Center as Gd,Group as Ud,Stack as Qd,Text as df,Title as zd,UnstyledButton as Wd}from"@mantine/core";import{normalizeOperationOutcome as Xd}from"@medplum/core";import Ae,{useState as Jd}from"react";function cf(e){let o=v(),[t,r]=Jd();return Ae.createElement(Qd,null,Ae.createElement(Gd,{sx:{flexDirection:"column"}},Ae.createElement(je,{size:32}),Ae.createElement(zd,{order:3},"Choose profile")),Ae.createElement(Bo,{outcome:t}),e.memberships.map(a=>Ae.createElement(Wd,{key:a.id,onClick:()=>{o.post("auth/profile",{login:e.login,profile:a.id}).then(e.handleAuthResponse).catch(n=>r(Xd(n)))}},Ae.createElement(Ud,null,Ae.createElement(qd,{radius:"xl"}),Ae.createElement("div",{style:{flex:1}},Ae.createElement(df,{size:"sm",weight:500},a.profile?.display),Ae.createElement(df,{color:"dimmed",size:"xs"},a.project?.display))))))}import{Button as Kd,Center as $d,Checkbox as jd,Group as _d,Stack as mf,Title as Zd}from"@mantine/core";import Ve from"react";function pf(e){let o=v();return Ve.createElement(K,{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(mf,null,Ve.createElement($d,{sx:{flexDirection:"column"}},Ve.createElement(je,{size:32}),Ve.createElement(Zd,null,"Choose scope")),Ve.createElement(mf,null,(e.scope??"openid").split(" ").map(t=>Ve.createElement(jd,{key:t,id:t,name:t,label:t,defaultChecked:!0}))),Ve.createElement(_d,{position:"right",mt:"xl"},Ve.createElement(Kd,{type:"submit"},"Set scope"))))}import{Alert as Yd,Button as ec,Center as oc,Group as tc,Stack as xf,TextInput as rc,Title as ac}from"@mantine/core";import{normalizeErrorString as nc}from"@medplum/core";import Fe,{useState as fc}from"react";function If(e){let o=v(),[t,r]=fc();return Fe.createElement(K,{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(nc(n)))}},Fe.createElement(xf,null,Fe.createElement(oc,{sx:{flexDirection:"column"}},Fe.createElement(je,{size:32}),Fe.createElement(ac,null,"Enter MFA code")),t&&Fe.createElement(Yd,{icon:Fe.createElement(ro,{size:16}),title:"Error",color:"red"},t),Fe.createElement(xf,null,Fe.createElement(rc,{name:"token",label:"MFA code",required:!0})),Fe.createElement(tc,{position:"right",mt:"xl"},Fe.createElement(ec,{type:"submit"},"Submit code"))))}function aD(e){let{login:o,chooseScopes:t,onSuccess:r,onForgotPassword:a,onRegister:n,onCode:f,...s}=e,l=v(),[i,u]=sa(),[d,c]=sa(!1),[x,y]=sa(),k=la(A=>{f?f(A):l.processCode(A).then(()=>{r&&r()}).catch(I=>gf({color:"red",message:hf(I)}))},[l,f,r]),T=la(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=la(A=>{k(A.code)},[k]);return lc(()=>{o&&!i&&l.get("auth/login/"+o).then(T).catch(A=>gf({color:"red",message:hf(A)}))},[l,o,i,T]),fo.createElement(St,{width:450},(()=>i?d?fo.createElement(If,{login:i,handleAuthResponse:T}):x?fo.createElement(cf,{login:i,memberships:x,handleAuthResponse:T}):e.projectId==="new"?fo.createElement(Pt,{login:i,handleAuthResponse:T}):e.chooseScopes?fo.createElement(pf,{login:i,scope:e.scope,handleAuthResponse:B}):fo.createElement("div",null,"Success"):fo.createElement(uf,{onForgotPassword:a,onRegister:n,handleAuthResponse:T,disableGoogleAuth:e.disableGoogleAuth,disableEmailAuth:e.disableEmailAuth,...s},e.children))())}import{getPropertyDisplayName as Tc,tryGetDataType as Dc}from"@medplum/core";import Yo from"react";var Mt=["meta","implicitRules","language","text","contained","extension","modifierExtension"];import{createStyles as sc}from"@mantine/core";import jo from"react";var ic=sc(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 Cf(e){let{children:o,compact:t}=e,{classes:r,cx:a}=ic();return jo.createElement("dl",{className:a(r.root,{[r.compact]:t})},o)}function yf(e){return jo.createElement(jo.Fragment,null,jo.createElement("dt",null,e.term),jo.createElement("dd",null,e.children))}import{ActionIcon as gc,Box as hc,CopyButton as Cc,Tooltip as yc}from"@mantine/core";import{formatDateTime as vc,formatPeriod as Sc,formatTiming as bc,PropertyType as V}from"@medplum/core";import E from"react";import{formatCodeableConcept as uc}from"@medplum/core";import vf from"react";function Ao(e){return vf.createElement(vf.Fragment,null,uc(e.value))}import{formatCoding as dc}from"@medplum/core";import Sf from"react";function bf(e){return Sf.createElement(Sf.Fragment,null,dc(e.value))}import ia from"react";import Pf from"react";function wt(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("]")),Pf.createElement(Pf.Fragment,null,t.join("").trim())}function Tf(e){let o=e.value;return o?ia.createElement(ia.Fragment,null,o.name,o.name&&": ",o.telecom?.map(t=>ia.createElement(wt,{key:`telecom-${o.name}-${t.value}`,value:t}))):null}import cc from"react";function Df(e){return cc.createElement("div",null,e.value?.system,": ",e.value?.value)}import{formatMoney as mc}from"@medplum/core";import kf from"react";function Bf(e){return kf.createElement(kf.Fragment,null,mc(e.value))}import{formatQuantity as pc}from"@medplum/core";import Af from"react";function _o(e){return Af.createElement(Af.Fragment,null,pc(e.value))}import{formatRange as xc}from"@medplum/core";import Ff from"react";function Ot(e){return Ff.createElement(Ff.Fragment,null,xc(e.value))}import Et from"react";function Mf(e){let o=e.value;return o?Et.createElement(Et.Fragment,null,Et.createElement(_o,{value:o.numerator}),"\xA0/\xA0",Et.createElement(_o,{value:o.denominator})):null}import{stringify as Ic}from"@medplum/core";import ua from"react";function lo(e){if(!e.value)return null;let o=e.value.display||e.value.reference||Ic(e.value);return e.link!==!1&&e.value.reference?ua.createElement(se,{to:e.value},o):ua.createElement(ua.Fragment,null,o)}import Fo from"react";function wf(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(pe,{arrayElement:!0,property:o,propertyType:r,value:a,ignoreMissingValues:e.ignoreMissingValues,link:e.link})))):Fo.createElement(Fo.Fragment,null)}function pe(e){let{property:o,propertyType:t,value:r}=e;if(o?.path?.endsWith(".id"))return E.createElement(hc,{component:"div",sx:{display:"flex",gap:3,alignItems:"center"}},r,E.createElement(Cc,{value:r,timeout:2e3},({copied:n,copy:f})=>E.createElement(yc,{label:n?"Copied":"Copy",withArrow:!0,position:"right"},E.createElement(gc,{color:n?"teal":"gray",onClick:f},n?E.createElement(zo,{size:"1rem"}):E.createElement(Mr,{size:"1rem"})))));if(o?.max&&o.max>1&&!e.arrayElement)return t===V.Attachment?E.createElement(Wn,{values:r,maxWidth:e.maxWidth}):E.createElement(wf,{property:o,values:r,ignoreMissingValues:e.ignoreMissingValues,link:e.link});switch(t){case V.boolean:return E.createElement(E.Fragment,null,r===void 0?"":(!!r).toString());case V.SystemString:case V.string:return E.createElement("div",{style:{whiteSpace:"pre-wrap"}},r);case V.code:case V.date:case V.decimal:case V.integer:case V.positiveInt:case V.unsignedInt:case V.uri:case V.url:return E.createElement(E.Fragment,null,r);case V.canonical:return E.createElement(lo,{value:{reference:r},link:e.link});case V.dateTime:case V.instant:return E.createElement(E.Fragment,null,vc(r));case V.markdown:return E.createElement("pre",null,r);case V.Address:return E.createElement(dn,{value:r});case V.Annotation:return E.createElement(E.Fragment,null,r?.text);case V.Attachment:return E.createElement(Oe,{value:r,maxWidth:e.maxWidth});case V.CodeableConcept:return E.createElement(Ao,{value:r});case V.Coding:return E.createElement(bf,{value:r});case V.ContactDetail:return E.createElement(Tf,{value:r});case V.ContactPoint:return E.createElement(wt,{value:r});case V.HumanName:return E.createElement(gt,{value:r});case V.Identifier:return E.createElement(Df,{value:r});case V.Money:return E.createElement(Bf,{value:r});case V.Period:return E.createElement(E.Fragment,null,Sc(r));case V.Quantity:case V.Duration:return E.createElement(_o,{value:r});case V.Range:return E.createElement(Ot,{value:r});case V.Ratio:return E.createElement(Mf,{value:r});case V.Reference:return E.createElement(lo,{value:r,link:e.link});case V.Timing:return E.createElement(E.Fragment,null,bc(r));case V.Dosage:case V.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 Pc}from"@medplum/core";function ye(e,o){let t=Pc(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=Dc(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(Cf,{compact:e.compact},Object.entries(a.elements).map(n=>{let[f,s]=n;if(Mt.includes(f))return null;let[l,i]=ye(o,f);return e.ignoreMissingValues&&(!l||Array.isArray(l)&&l.length===0)?null:Yo.createElement(yf,{key:f,term:Tc(f)},Yo.createElement(pe,{property:s,propertyType:i,value:l,ignoreMissingValues:e.ignoreMissingValues,link:e.link}))})):Yo.createElement("div",null,r,"\xA0not implemented")}import{Stack as Zm}from"@mantine/core";import{getPropertyDisplayName as nl,tryGetDataType as Ym}from"@medplum/core";import Oo,{useState as ep}from"react";import{Group as kc,Input as Bc}from"@mantine/core";import Lt from"react";function Rt(e){return Lt.createElement(kc,{noWrap:!0},Lt.createElement("div",null,e.children),Lt.createElement("div",null,Lt.createElement(Bc.Wrapper,{id:e.htmlFor,label:e.title,description:e.description,withAsterisk:e.withAsterisk},(()=>null)())))}import{Input as Ac}from"@mantine/core";import Fc from"react";function ve(e){return Fc.createElement(Ac.Wrapper,{id:e.htmlFor,label:e.title,description:e.description,withAsterisk:e.withAsterisk,error:me(e.outcome,e.htmlFor)},e.children)}import{capitalize as Mc}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]",Mc(f.code));s in e&&delete e[s]}return e[t]=a,e}import{Checkbox as zm,Group as Wm,NativeSelect as Xm,Textarea as Jm,TextInput as Ca}from"@mantine/core";import{capitalize as Km,PropertyType as L}from"@medplum/core";import G,{useState as $m}from"react";import wc,{useState as Oc}from"react";function Of(e){let[o,t]=Oc(e.defaultValue);function r(a){let n=Lc(a);t(n),e.onChange&&e.onChange(n)}return wc.createElement(bo,{binding:e.binding,name:e.name,placeholder:e.placeholder,defaultValue:o&&Ec(o),maxSelectedValues:1,onChange:r})}function Ec(e){return e.coding?.map(o=>({system:o.system,code:o.code,display:o.display}))}function Lc(e){if(e.length!==0)return{coding:e.map(o=>({system:o.system,code:o.code,display:o.display}))}}import Rc,{useState as Nc}from"react";function Nt(e){let[o,t]=Nc(e.defaultValue);function r(a){let n=a[0],f=n&&Vc(n);t(f),e.onChange&&e.onChange(f)}return Rc.createElement(bo,{binding:e.binding,name:e.name,placeholder:e.placeholder,defaultValue:o&&Hc(o),maxSelectedValues:1,onChange:r})}function Hc(e){return{system:e.system,code:e.code,display:e.display}}function Vc(e){return{system:e.system,code:e.code,display:e.display}}import{Group as zc,TextInput as Wc}from"@mantine/core";import da,{useRef as Xc,useState as Jc}from"react";import{Group as qc,NativeSelect as Ef,TextInput as Gc}from"@mantine/core";import Ht,{useRef as Uc,useState as Qc}from"react";function Vt(e){let[o,t]=Qc(e.defaultValue),r=Uc();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 Ht.createElement(qc,{spacing:"xs",grow:!0,noWrap:!0},Ht.createElement(Ef,{"data-testid":"system",defaultValue:o?.system,onChange:l=>n(l.currentTarget.value),data:["","email","phone","fax","pager","sms","other"]}),Ht.createElement(Ef,{"data-testid":"use",defaultValue:o?.use,onChange:l=>f(l.currentTarget.value),data:["","home","work","temp","old","mobile"]}),Ht.createElement(Gc,{placeholder:"Value",defaultValue:o?.value,onChange:l=>s(l.currentTarget.value)}))}function Lf(e){let[o,t]=Jc(e.defaultValue),r=Xc();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(zc,{spacing:"xs",grow:!0,noWrap:!0},da.createElement(Wc,{"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(Vt,{name:e.name+"-telecom",defaultValue:o?.telecom?.[0],onChange:f}))}import{TextInput as Kc}from"@mantine/core";import $c from"react";import{isValidDate as Rf}from"@medplum/core";function Nf(e){if(!e)return"";let o=new Date(e);return Rf(o)?o.toLocaleDateString("sv")+"T"+o.toLocaleTimeString("sv"):""}function Hf(e){if(!e)return"";let o=new Date(e);return Rf(o)?o.toISOString():""}function Me(e){return $c.createElement(Kc,{id:e.name,name:e.name,"data-autofocus":e.autoFocus,"data-testid":e.name,placeholder:e.placeholder,required:e.required,type:jc(),defaultValue:Nf(e.defaultValue),autoFocus:e.autoFocus,error:me(e.outcome,e.name),onChange:o=>{if(e.onChange){let t=o.currentTarget.value;e.onChange(Hf(t))}}})}function jc(){return"datetime-local"}import{JsonInput as _c}from"@mantine/core";import{stringify as Zc}from"@medplum/core";import Yc from"react";function Vf(e){return Yc.createElement(_c,{id:e.name,name:e.name,"data-testid":"extension-input",defaultValue:Zc(e.defaultValue),deserialize:JSON.parse,onChange:o=>{e.onChange&&e.onChange(JSON.parse(o))}})}import{Group as em,NativeSelect as om,TextInput as qt}from"@mantine/core";import Mo,{useRef as tm,useState as rm}from"react";function qf(e){let[o,t]=rm(e.defaultValue),r=tm();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(em,{spacing:"xs",grow:!0,noWrap:!0},Mo.createElement(om,{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(qt,{placeholder:"Prefix",name:e.name+"-prefix",defaultValue:o?.prefix?.join(" "),onChange:u=>f(u.currentTarget.value)}),Mo.createElement(qt,{placeholder:"Given",name:e.name+"-given",defaultValue:o?.given?.join(" "),onChange:u=>s(u.currentTarget.value)}),Mo.createElement(qt,{name:e.name+"-family",placeholder:"Family",defaultValue:o?.family,onChange:u=>l(u.currentTarget.value)}),Mo.createElement(qt,{placeholder:"Suffix",name:e.name+"-suffix",defaultValue:o?.suffix?.join(" "),onChange:u=>i(u.currentTarget.value)}))}import{Group as am,TextInput as Gf}from"@mantine/core";import ca,{useState as nm}from"react";function Uf(e){let[o,t]=nm(e.defaultValue);function r(a){t(a),e.onChange&&e.onChange(a)}return ca.createElement(am,{spacing:"xs",grow:!0,noWrap:!0},ca.createElement(Gf,{placeholder:"System",defaultValue:o?.system,onChange:a=>r({...o,system:a.currentTarget.value})}),ca.createElement(Gf,{placeholder:"Value",defaultValue:o?.value,onChange:a=>r({...o,value:a.currentTarget.value})}))}import{NativeSelect as fm,TextInput as lm}from"@mantine/core";import ma,{useCallback as pa,useState as sm}from"react";var im=["USD","EUR","CAD","GBP","AUD"];function Qf(e){let{onChange:o}=e,[t,r]=sm(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(fm,{defaultValue:t?.currency,data:im,styles:{input:{fontWeight:500,borderTopLeftRadius:0,borderBottomLeftRadius:0,width:92}},onChange:n});return ma.createElement(lm,{type:"number",label:e.label,placeholder:e.placeholder??"Value",defaultValue:t?.value?.toString()??"USD",icon:ma.createElement(wr,{size:14}),rightSection:s,rightSectionWidth:92,onChange:f})}import{Group as um}from"@mantine/core";import xa,{useState as dm}from"react";function zf(e){let[o,t]=dm(e.defaultValue);function r(a){t(a),e.onChange&&e.onChange(a)}return xa.createElement(um,{spacing:"xs",grow:!0,noWrap:!0},xa.createElement(Me,{name:e.name+".start",placeholder:"Start",defaultValue:o?.start,onChange:a=>r({...o,start:a})}),xa.createElement(Me,{name:e.name+".end",placeholder:"End",defaultValue:o?.end,onChange:a=>r({...o,end:a})}))}import{Group as cm,NativeSelect as mm,TextInput as Wf}from"@mantine/core";import Gt,{useState as pm}from"react";function Pe(e){let[o,t]=pm(e.defaultValue);function r(a){t(a),e.onChange&&e.onChange(a)}return Gt.createElement(cm,{spacing:"xs",grow:!0,noWrap:!0},Gt.createElement(mm,{style:{width:80},"data-testid":e.name+"-comparator",defaultValue:o?.comparator,data:["","<","<=",">=",">"],onChange:a=>r({...o,comparator:a.currentTarget.value})}),Gt.createElement(Wf,{id:e.name,name:e.name,"data-autofocus":e.autoFocus,"data-testid":e.name+"-value",type:"number",placeholder:"Value",defaultValue:o?.value,autoFocus:e.autoFocus,step:"any",onWheel:a=>{e.disableWheel&&a.currentTarget.blur()},onChange:a=>{r({...o,value:xm(a.currentTarget.value)})}}),Gt.createElement(Wf,{placeholder:"Unit","data-testid":e.name+"-unit",defaultValue:o?.unit,onChange:a=>r({...o,unit:a.currentTarget.value})}))}function xm(e){if(e)return parseFloat(e)}import{Group as Im}from"@mantine/core";import Ia,{useState as gm}from"react";function ot(e){let[o,t]=gm(e.defaultValue);function r(a){t(a),e.onChange&&e.onChange(a)}return Ia.createElement(Im,{spacing:"xs",grow:!0,noWrap:!0},Ia.createElement(Pe,{name:e.name+"-low",defaultValue:o?.low,onChange:a=>r({...o,low:a})}),Ia.createElement(Pe,{name:e.name+"-high",defaultValue:o?.high,onChange:a=>r({...o,high:a})}))}import{Group as hm}from"@mantine/core";import ga,{useState as Cm}from"react";function Xf(e){let[o,t]=Cm(e.defaultValue);function r(a){t(a),e.onChange&&e.onChange(a)}return ga.createElement(hm,{spacing:"xs",grow:!0,noWrap:!0},ga.createElement(Pe,{name:e.name+"-numerator",defaultValue:o?.numerator,onChange:a=>r({...o,numerator:a})}),ga.createElement(Pe,{name:e.name+"-denominator",defaultValue:o?.denominator,onChange:a=>r({...o,denominator:a})}))}import{Group as Am,NativeSelect as Fm}from"@mantine/core";import{createReference as Mm}from"@medplum/core";import Qt,{useState as jf}from"react";import{Group as ym,Text as Jf}from"@mantine/core";import{getDisplayString as vm,getReferenceString as $f}from"@medplum/core";import so,{forwardRef as Sm,useCallback as Kf,useState as bm}from"react";var Pm={Observation:"code",User:"email:contains"},Tm=["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 Dm(e){return{value:$f(e),label:vm(e),resource:e}}function Ut(e){let o=v(),t=e.resourceType,[r,a]=bm(),n=X(e.defaultValue,a),f=e.onChange,s=Kf(async(i,u)=>{let d=Bm(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,itemComponent:km,defaultValue:n,placeholder:e.placeholder,maxSelectedValues:1,toKey:$f,toOption:Dm,loadOptions:s,onChange:l,clearable:!0})}var km=Sm(({label:e,resource:o,...t},r)=>so.createElement("div",{ref:r,...t},so.createElement(ym,{noWrap:!0},so.createElement(ge,{value:o}),so.createElement("div",null,so.createElement(Jf,null,e),so.createElement(Jf,{size:"xs",color:"dimmed"},o.birthDate)))));function Bm(e){return Pm[e]??(Tm.includes(e)?"name":"_id")}function wo(e){let o=wm(e.targetTypes),t=Om(e.defaultValue,o),[r,a]=jf(e.defaultValue),[n,f]=jf(t);function s(l){a(l),e.onChange&&e.onChange(l)}return Qt.createElement(Am,{spacing:"xs",grow:!0,noWrap:!0},o&&o.length>1&&Qt.createElement(Fm,{"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(Po,{autoFocus:e.autoFocus,testId:"reference-input-resource-type-input",defaultValue:n,onChange:f,name:e.name+"-resourceType",placeholder:"Resource Type"}),Qt.createElement(Ut,{resourceType:n,name:e.name+"-id",placeholder:e.placeholder,defaultValue:r,onChange:l=>{s(l?Mm(l):void 0)}}))}function wm(e){if(!(!e||e.length===0||e.length===1&&e[0]==="Resource"))return e}function Om(e,o){let t=e?.reference?.split("/")[0];if(t)return t;if(o&&o.length>0)return o[0]}import{ActionIcon as _f}from"@mantine/core";import xe,{useRef as Em,useState as Lm}from"react";function Zf(e){let[o,t]=Lm(e.defaultValue&&Array.isArray(e.defaultValue)?e.defaultValue:[]),r=Em();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(_f,{title:"Remove",size:"sm",onClick:s=>{H(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(_f,{title:"Add",size:"sm",color:"green",onClick:n=>{H(n);let f=[...r.current];f.push(void 0),a(f)}},xe.createElement(po,null))))))}import{Button as ol,Chip as Yf,Group as zt,Modal as Rm,NativeSelect as Nm,Stack as Hm,Switch as Vm,TextInput as qm}from"@mantine/core";import{formatTiming as Gm}from"@medplum/core";import j,{useRef as tl,useState as ha}from"react";var Um=["sun","mon","tue","wed","thu","fri","sat"];function rl(e){let[o,t]=ha(e.defaultValue),[r,a]=ha(!1),n=tl();return n.current=o,j.createElement(j.Fragment,null,j.createElement(zt,{spacing:"xs",grow:!0,noWrap:!0},j.createElement("span",null,Gm(n.current)||"No repeat"),j.createElement(ol,{onClick:()=>a(!0)},"Edit")),j.createElement(Qm,{visible:r,defaultValue:n.current,onOk:f=>{e.onChange&&e.onChange(f),t(f),a(!1)},onCancel:()=>a(!1)}))}var el={repeat:{period:1,periodUnit:"d"}};function Qm(e){let[o,t]=ha(e.defaultValue||el),r=tl();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(Rm,{title:"Timing",closeButtonProps:{"aria-label":"Close"},opened:e.visible,onClose:()=>e.onCancel()},j.createElement(Hm,null,j.createElement(ve,{title:"Starts on",htmlFor:"timing-dialog-start"},j.createElement(Me,{name:"timing-dialog-start",onChange:i=>a(i)})),j.createElement(Vm,{label:"Repeat",checked:!!o.repeat,onChange:i=>n(i.currentTarget.checked?el.repeat:void 0)}),o.repeat&&j.createElement(j.Fragment,null,j.createElement(ve,{title:"Repeat every",htmlFor:"timing-dialog-period"},j.createElement(zt,{spacing:"xs",grow:!0,noWrap:!0},j.createElement(qm,{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(Nm,{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(ve,{title:"Repeat on"},j.createElement(Yf.Group,{multiple:!0,onChange:l},j.createElement(zt,{position:"apart",mt:"md",spacing:"xs"},Um.map(i=>j.createElement(Yf,{key:i,value:i,size:"xs",radius:"xl"},i.charAt(0).toUpperCase())))))),j.createElement(zt,{position:"right"},j.createElement(ol,{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(Jn,{name:r,defaultValue:a,onChange:e.onChange}):G.createElement(Zf,{property:o,name:r,defaultValue:a,onChange:e.onChange});let n=o.type;return n.length>1?G.createElement(jm,{elementDefinitionTypes:n,...e}):G.createElement(al,{elementDefinitionType:n[0],...e})}function jm(e){let o=e.elementDefinitionTypes,t;e.defaultPropertyType&&(t=o.find(n=>n.code===e.defaultPropertyType)),t||(t=o[0]);let[r,a]=$m(t);return G.createElement(Wm,{spacing:"xs",grow:!0,noWrap:!0},G.createElement(Xm,{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(al,{...e,elementDefinitionType:r,onChange:n=>{e.onChange&&e.onChange(n,e.name.replace("[x]",Km(r.code)))}}))}function al(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(Ca,{id:r,name:r,"data-testid":r,defaultValue:a,required:n,onChange:f=>{e.onChange&&e.onChange(f.currentTarget.value)},error:me(e.outcome,r)});case L.date:return G.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:me(e.outcome,r)});case L.dateTime:case L.instant:return G.createElement(Me,{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(Ca,{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(yt,{binding:o.binding?.valueSet,name:r,defaultValue:a,onChange:e.onChange});case L.boolean:return G.createElement(zm,{id:r,name:r,"data-testid":r,defaultChecked:!!a,onChange:f=>{e.onChange&&e.onChange(f.currentTarget.checked)}});case L.markdown:return G.createElement(Jm,{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(xn,{name:r,defaultValue:a,onChange:e.onChange});case L.Annotation:return G.createElement(In,{name:r,defaultValue:a,onChange:e.onChange});case L.Attachment:return G.createElement(vt,{name:r,defaultValue:a,onChange:e.onChange});case L.CodeableConcept:return G.createElement(Of,{binding:o.binding?.valueSet,name:r,defaultValue:a,onChange:e.onChange});case L.Coding:return G.createElement(Nt,{binding:o.binding?.valueSet,name:r,defaultValue:a,onChange:e.onChange});case L.ContactDetail:return G.createElement(Lf,{name:r,defaultValue:a,onChange:e.onChange});case L.ContactPoint:return G.createElement(Vt,{name:r,defaultValue:a,onChange:e.onChange});case L.Extension:return G.createElement(Vf,{name:r,defaultValue:a,onChange:e.onChange});case L.HumanName:return G.createElement(qf,{name:r,defaultValue:a,onChange:e.onChange});case L.Identifier:return G.createElement(Uf,{name:r,defaultValue:a,onChange:e.onChange});case L.Money:return G.createElement(Qf,{name:r,defaultValue:a,onChange:e.onChange});case L.Period:return G.createElement(zf,{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(Xf,{name:r,defaultValue:a,onChange:e.onChange});case L.Reference:return G.createElement(wo,{name:r,defaultValue:a,targetTypes:_m(o),onChange:e.onChange});case L.Timing:return G.createElement(rl,{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 _m(e){return e?.type?.[0]?.targetProfile?.map(o=>o.split("/").pop())}function tt(e){let[o,t]=ep(e.defaultValue??{});function r(s){t(s),e.onChange&&e.onChange(s)}let a=e.typeName,n=Ym(a);if(!n)return Oo.createElement("div",null,a,"\xA0not implemented");let f={type:a,value:o};return Oo.createElement(Zm,null,Object.entries(n.elements).map(([s,l])=>{if(s==="id"||Mt.includes(s)||!l.type)return null;let[i,u]=ye(f,s),d=l.min!==void 0&&l.min>0;return l.type.length===1&&l.type[0].code==="boolean"?Oo.createElement(Rt,{key:s,title:nl(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(ve,{key:s,title:nl(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 ya,createStyles as op,Group as ll}from"@mantine/core";import oe,{useMemo as tp,useState as rp}from"react";function fl(e){return e.toLocaleString("default",{month:"long"})+" "+e.getFullYear()}function Wt(){let e=new Date;return e.setDate(1),e.setHours(0,0,0,0),e}var ap=op(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 sl(e){let{classes:o}=ap(),{onChangeMonth:t,onClick:r}=e,[a,n]=rp(Wt);function f(l){n(i=>{let u=new Date(i.getTime());return u.setMonth(i.getMonth()+l),t(u),u})}let s=tp(()=>np(a,e.slots),[a,e.slots]);return oe.createElement("div",null,oe.createElement(ll,{position:"apart",spacing:"xs",grow:!0,noWrap:!0},oe.createElement("p",{style:{flex:1}},fl(a)),oe.createElement(ll,{position:"right",spacing:"xs"},oe.createElement(ya,{variant:"outline","aria-label":"Previous month",onClick:()=>f(-1)},"<"),oe.createElement(ya,{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(ya,{disabled:!u.available,onClick:()=>r(u.date)},u.date.getDate()))))))))}function np(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:fp(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 fp(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 ux from"react";import{ActionIcon as Dl,Center as Jp,createStyles as Kp,Group as $p,Loader as jp,Menu as Ge,ScrollArea as _p,TextInput as Zp}from"@mantine/core";import{showNotification as Yp,updateNotification as ka}from"@mantine/notifications";import{getReferenceString as rt,normalizeErrorString as ex}from"@medplum/core";import D,{useCallback as Kt,useEffect as ox,useRef as kl,useState as Bl}from"react";import{createStyles as yp,Group as Jt,List as dl,Stack as cl,Text as Te,Title as ml}from"@mantine/core";import{capitalize as vp,formatCodeableConcept as Sp,formatDateTime as ba,formatObservationValue as bp,isReference as Pp}from"@medplum/core";import h,{useEffect as Tp,useState as Dp}from"react";import{Blockquote as lp,createStyles as sp,Stack as ip}from"@mantine/core";import il from"react";var up=sp(e=>({noteBody:{fontSize:e.fontSizes.sm},noteCite:{fontSize:e.fontSizes.xs,marginBlockStart:3},noteRoot:{padding:5}}));function va({value:e}){let{classes:o}=up();return e?il.createElement(ip,{justify:"flex-start",spacing:"xs"},e.map(t=>t.text&&il.createElement(lp,{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 Ip}from"@mantine/core";import Sa from"react";import{Text as dp}from"@mantine/core";import{getDisplayString as cp,isOk as mp,normalizeErrorString as pp}from"@medplum/core";import ul,{useState as xp}from"react";function Ee(e){let{value:o,link:t,...r}=e,[a,n]=xp(),f=X(o,n),s;if(a&&!mp(a))s=`[${pp(a)}]`;else if(f)s=cp(f);else return null;return t?ul.createElement(se,{to:o,...r},s):ul.createElement(dp,{component:"span",...r},s)}function _e(e){return Sa.createElement(Ip,{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 gp}from"@mantine/core";import hp from"react";var Cp={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 Xt(e){return hp.createElement(gp,{color:Cp[e.status]},e.status)}var pl=yp(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=v(),t=X(e.value),[r,a]=Dp();if(Tp(()=>{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(cl,null,h.createElement(ml,null,"Diagnostic Report"),h.createElement(kp,{value:t}),r&&!e.hideSpecimenInfo&&Bp(r),t.result&&h.createElement(Ap,{hideObservationNotes:e.hideObservationNotes,value:t.result}),n.length>0&&h.createElement(va,{value:n}))}function kp({value:e}){return h.createElement(Jt,{mt:"md",spacing:30},e.subject&&h.createElement("div",null,h.createElement(Te,{size:"xs",transform:"uppercase",color:"dimmed"},"Subject"),h.createElement(Te,null,h.createElement(_e,{value:e.subject,link:!0}))),e.resultsInterpreter?.map(o=>h.createElement("div",{key:o.reference},h.createElement(Te,{size:"xs",transform:"uppercase",color:"dimmed"},"Interpreter"),h.createElement(Te,null,h.createElement(_e,{value:o,link:!0})))),e.performer?.map(o=>h.createElement("div",{key:o.reference},h.createElement(Te,{size:"xs",transform:"uppercase",color:"dimmed"},"Performer"),h.createElement(Te,null,h.createElement(_e,{value:o,link:!0})))),e.issued&&h.createElement("div",null,h.createElement(Te,{size:"xs",transform:"uppercase",color:"dimmed"},"Issued"),h.createElement(Te,null,ba(e.issued))),e.status&&h.createElement("div",null,h.createElement(Te,{size:"xs",transform:"uppercase",color:"dimmed"},"Status"),h.createElement(Te,null,vp(e.status))))}function Bp(e){return h.createElement(cl,{spacing:"xs"},h.createElement(ml,{order:2,size:"h6"},"Specimens"),h.createElement(dl,{type:"ordered"},e?.map(o=>h.createElement(dl.Item,{ml:"sm",key:`specimen-${o.id}`},h.createElement(Jt,{spacing:20},h.createElement(Jt,{spacing:5},h.createElement(Te,{fw:500},"Collected:")," ",ba(o.collection?.collectedDateTime)),h.createElement(Jt,{spacing:5},h.createElement(Te,{fw:500},"Received:")," ",ba(o.receivedTime)))))))}function Ap(e){let{classes:o}=pl();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(xl,{value:e.value,ancestorIds:e.ancestorIds,hideObservationNotes:e.hideObservationNotes})))}function xl(e){return h.createElement(h.Fragment,null,e.value?.map(o=>h.createElement(Fp,{key:`obs-${Pp(o)?o.reference:o.id}`,value:o,ancestorIds:e.ancestorIds,hideObservationNotes:e.hideObservationNotes})))}function Fp(e){let{classes:o,cx:t}=pl(),r=X(e.value);if(!r||e.ancestorIds?.includes(r.id))return null;let a=!e.hideObservationNotes&&r.note,n=Op(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(Mp,{value:r})),h.createElement("td",null,h.createElement(wp,{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-${Sp(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(Xt,{status:r.status}))),r.hasMember&&h.createElement(xl,{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(va,{value:r.note}))))}function Mp(e){let o=e.value;return h.createElement(h.Fragment,null,bp(o))}function wp(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(Ot,{value:o}):null}function Op(e){let o=e.interpretation?.[0]?.coding?.[0]?.code;return o==="AA"||o==="LL"||o==="HH"||o==="A"}import{createStyles as Ep}from"@mantine/core";import{getDataType as Lp,getPropertyDisplayName as Rp,stringify as Il,toTypedValue as gl}from"@medplum/core";import ue,{useEffect as Np,useState as Hp}from"react";var Vp=Ep(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 Cl(e){let{classes:o}=Vp(),t=v(),[r,a]=Hp(!1);if(Np(()=>{t.requestSchema(e.original.resourceType).then(()=>a(!0)).catch(console.log)},[t,e.original.resourceType]),!r)return null;let n=Lp(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]=ye(gl(e.original),f),[u,d]=ye(gl(e.revised),f);return hl(l)&&hl(u)||Il(l)===Il(u)?null:ue.createElement("tr",{key:f},ue.createElement("td",null,Rp(f)),ue.createElement("td",{className:o.removed},ue.createElement(pe,{property:s,propertyType:i,value:l,ignoreMissingValues:!0})),ue.createElement("td",{className:o.added},ue.createElement(pe,{property:s,propertyType:d,value:u,ignoreMissingValues:!0})))})))}function hl(e){return!e||Array.isArray(e)&&e.length===0||typeof e=="object"&&Object.keys(e).length===0}import qp,{useEffect as Gp,useState as Up}from"react";function Ta(e){let o=v(),t=X(e.value),[r,a]=Up(!1);return Gp(()=>{t&&o.requestSchema(t.resourceType).then(()=>a(!0)).catch(console.log)},[o,t]),!r||!t?null:qp.createElement(Zo,{value:{type:t.resourceType,value:e.forceUseInput?e.value:t},ignoreMissingValues:e.ignoreMissingValues})}import{ActionIcon as Qp,Group as zp,Menu as yl,Text as Da}from"@mantine/core";import{formatDateTime as Wp,getReferenceString as Xp}from"@medplum/core";import re from"react";function vl(e){return re.createElement($e,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(zp,{position:"apart",spacing:8,mx:"xs",my:"sm"},re.createElement(ge,{value:f,link:!0,size:"md"}),re.createElement("div",{style:{flex:1}},re.createElement(Da,{size:"sm"},re.createElement(Ee,{color:"dark",weight:500,value:f,link:!0})),re.createElement(Da,{size:"xs"},re.createElement(se,{color:"dimmed",to:e.resource},Wp(s)),re.createElement(Da,{component:"span",color:"dimmed",mx:8},"\xB7"),re.createElement(se,{color:"dimmed",to:e.resource},e.resource.resourceType))),a&&re.createElement(yl,{position:"bottom-end",shadow:"md",width:200},re.createElement(yl.Target,null,re.createElement(Qp,{radius:"xl","aria-label":`Actions for ${Xp(e.resource)}`},re.createElement(Or,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 Pl(e,o){e.sort((t,r)=>{let a=Sl(t,o),n=Sl(r,o);return a>n?1:a<n?-1:bl(t,o)-bl(r,o)})}function Sl(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 bl(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 tx=Kp(e=>({pinnedComment:{backgroundColor:e.colors.blue[0]}}));function Ye(e){let o=v(),t=ze(),r=o.getProfile(),a=kl(null),n=X(e.value),[f,s]=Bl(),[l,i]=Bl([]),u=e.loadTimelineResources,d=kl(l);d.current=l;let c=Kt(C=>{Pl(C,n),C.reverse(),i(C)},[n]),x=Kt(C=>{let N=[];for(let ke of C){if(ke.status!=="fulfilled")continue;let Se=ke.value;if(Se.type==="history"&&s(Se),Se.entry)for(let b of Se.entry)N.push(b.resource)}c(N)},[c]),y=Kt(C=>c([...d.current,C]),[c]),k=Kt(()=>{let C,N;"resourceType"in e.value?(C=e.value.resourceType,N=e.value.id):[C,N]=e.value.reference?.split("/"),u(o,C,N).then(x).catch(console.log)},[o,e.value,u,x]);ox(()=>k(),[k]);function T(C){!n||!e.createCommunication||o.createResource(e.createCommunication(n,r,C)).then(N=>y(N)).catch(console.log)}function B(C){!n||!e.createMedia||o.createResource(e.createMedia(n,r,C)).then(N=>y(N)).then(()=>ka({id:"upload-notification",color:"teal",title:"Upload complete",message:"",icon:D.createElement(zo,{size:16}),autoClose:2e3})).catch(N=>ka({id:"upload-notification",color:"red",title:"Upload error",message:ex(N),icon:D.createElement(Lr,{size:16}),autoClose:2e3}))}function A(C,N){return o.updateResource({...C,priority:N})}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(){Yp({id:"upload-notification",loading:!0,title:"Initializing upload...",message:"Please wait...",autoClose:!1,withCloseButton:!1})}function oo(C){ka({id:"upload-notification",loading:!0,title:"Uploading...",message:ix(C),autoClose:!1,withCloseButton:!1})}return n?D.createElement(vl,null,e.createCommunication&&D.createElement(ko,null,D.createElement(K,{testid:"timeline-form",onSubmit:C=>{T(C.text);let N=a.current;N&&(N.value="",N.focus())}},D.createElement($p,{spacing:"xs",noWrap:!0,style:{width:"100%"}},D.createElement(ge,{value:r}),D.createElement(Zp,{name:"text",ref:a,placeholder:"Add comment",style:{width:"100%",maxWidth:300}}),D.createElement(Dl,{type:"submit",radius:"xl",color:"blue",variant:"filled"},D.createElement(qr,{size:16})),D.createElement(To,{onUpload:B,onUploadStart:Le,onUploadProgress:oo},C=>D.createElement(Dl,{...C,radius:"xl",color:"blue",variant:"filled"},D.createElement(Wo,{size:16})))))),l.map(C=>{if(!C)return null;let N=`${C.resourceType}/${C.id}/${C.meta?.versionId}`;if(C.resourceType===n.resourceType&&C.id===n.id)return D.createElement(rx,{key:N,history:f,resource:C,onDetails:ne});switch(C.resourceType){case"AuditEvent":return D.createElement(lx,{key:N,resource:C,onDetails:g});case"Communication":return D.createElement(nx,{key:N,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(sx,{key:N,resource:C,onDetails:g,onEdit:M,onDelete:Y});case"Media":return D.createElement(fx,{key:N,resource:C,onDetails:g,onEdit:M,onDelete:Y});default:return D.createElement(Ze,{key:N,resource:C,padding:!0},D.createElement(Ta,{value:C,ignoreMissingValues:!0}))}})):D.createElement(Jp,{style:{width:"100%",height:"100%"}},D.createElement(jp,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(Gr,{size:14}),onClick:()=>e.onPin(e.resource),"aria-label":`Pin ${rt(e.resource)}`},"Pin"),e.onUnpin&&D.createElement(Ge.Item,{icon:D.createElement(Ur,{size:14}),onClick:()=>e.onUnpin(e.resource),"aria-label":`Unpin ${rt(e.resource)}`},"Unpin"),e.onDetails&&D.createElement(Ge.Item,{icon:D.createElement(Hr,{size:14}),onClick:()=>e.onDetails(e.resource),"aria-label":`Details ${rt(e.resource)}`},"Details"),e.onEdit&&D.createElement(Ge.Item,{icon:D.createElement(Er,{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(Ko,{size:14}),onClick:()=>e.onDelete(e.resource),"aria-label":`Delete ${rt(e.resource)}`},"Delete")))}function rx(e){let o=ax(e.history,e.resource);return o?D.createElement(Ze,{resource:e.resource,padding:!0,popupMenuItems:D.createElement(Eo,{...e})},D.createElement(Cl,{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 ax(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 nx(e){let{classes:o}=tx(),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 fx(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 lx(e){return D.createElement(Ze,{resource:e.resource,padding:!0,popupMenuItems:D.createElement(Eo,{...e})},D.createElement(_p,null,D.createElement("pre",null,e.resource.outcomeDesc)))}function sx(e){return D.createElement(Ze,{resource:e.resource,padding:!0,popupMenuItems:D.createElement(Eo,{...e})},D.createElement(Pa,{value:e.resource}))}function ix(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 pM(e){return ux.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 $t}from"@medplum/core";import dx from"react";function vM(e){return dx.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 yI,Loader as vI,Table as SI}from"@mantine/core";import{normalizeOperationOutcome as bI}from"@medplum/core";import ae,{useEffect as fs,useRef as ls,useState as rr}from"react";import{evalFhirPath as cx}from"@medplum/core";import mx from"react";function Al(e){let o;try{o=cx(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 mx.createElement(pe,{value:o[0]||"",propertyType:e.propertyType})}import{ActionIcon as nI,Button as Ho,Center as or,createStyles as fI,Group as tr,Loader as lI,Menu as rs,Pagination as sI,Table as iI,Text as Na,UnstyledButton as uI}from"@mantine/core";import{DEFAULT_SEARCH_COUNT as Ga,formatSearchQuery as dI}from"@medplum/core";import S,{useCallback as as,useEffect as ns,useRef as cI,useState as Ha}from"react";import{Box as px,Button as xx,Modal as Ix,Text as gx}from"@mantine/core";import Lo from"react";function Ml(e){return Lo.createElement(Ix,{title:"Export",closeButtonProps:{"aria-label":"Close"},opened:e.visible,onClose:e.onCancel},Lo.createElement(px,{display:"flex",sx:{justifyContent:"space-between"}},e.exportCsv&&Lo.createElement(Fl,{text:"CSV",exportLogic:e.exportCsv,onCancel:e.onCancel}),e.exportTransactionBundle&&Lo.createElement(Fl,{text:"Transaction Bundle",exportLogic:e.exportTransactionBundle,onCancel:e.onCancel})),Lo.createElement(gx,{sx:{marginTop:"10px",marginLeft:"2px"}},"Limited to 1000 records"))}function Fl(e){return Lo.createElement(xx,{onClick:()=>{e.exportLogic(),e.onCancel()}},`Export as ${e.text}`)}import{Button as ft,Modal as kx}from"@mantine/core";import{getDataType as Bx,getSearchParameters as Ax,stringify as Fx}from"@medplum/core";import J,{useEffect as Mx,useRef as Xl,useState as wx}from"react";import{capitalize as hx,DEFAULT_SEARCH_COUNT as Cx,evalFhirPathTyped as yx,formatDateTime as vx,Operator as w}from"@medplum/core";import jt from"react";var Sx={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]},bx={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 NM(e){return at(e,[])}function _t(e,o){return at(e,(e.filters??[]).filter(t=>t.code!==o))}function Ro(e,o,t,r,a){a&&(e=_t(e,o));let n=[];return e.filters&&n.push(...e.filters),n.push({code:o,operator:t,value:r??""}),at(e,n)}function HM(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 Ol(e,o){if(!e.filters)return e;let t=[...e.filters];return t.splice(o,1),{...e,filters:t,name:void 0}}function El(e,o){return Aa(e,o,-1)}function Ll(e,o){return Aa(e,o,0)}function Rl(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 Nl(e,o){return Fa(e,o,-1)}function Hl(e,o){return Fa(e,o,0)}function Vl(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 ql(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=_t(e,o),e=wl(e,o,w.GREATER_THAN_OR_EQUALS,t),e=wl(e,o,w.LESS_THAN_OR_EQUALS,r),e}function wl(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 Px(e,o){return e.offset===o?e:{...e,offset:o,name:void 0}}function Gl(e,o){let t=e.count??Cx,r=(o-1)*t;return Px(e,r)}function Oa(e,o,t){return o===Ul(e)&&t!==void 0&&t===Ql(e)?e:{...e,sortRules:[{code:o,descending:!!t}],name:void 0}}function VM(e,o){let t=!1;return Ul(e)===o&&(t=!Ql(e)),Oa(e,o,t)}function Ul(e){let o=e.sortRules;if(!o||o.length===0)return;let t=o[0].code;return t.startsWith("-")?t.substr(1):t}function Ql(e){let o=e.sortRules;return!o||o.length===0?!1:!!o[0].descending}function zl(e){return Sx[e.type]}function nt(e){return bx[e]??""}function he(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(hx).join(" "))}function Wl(e,o){let t=o.name;return t==="id"?e.id:t==="meta.versionId"?e.meta?.versionId:t==="_lastUpdated"?vx(e.meta?.lastUpdated):o.elementDefinition&&`${e.resourceType}.${o.name}`===o.elementDefinition.path?Tx(e,o.elementDefinition):o.searchParams&&o.searchParams.length===1&&o.name===o.searchParams[0].code?Dx(e,o.searchParams[0]):null}function Tx(e,o){let t=o.path?.split(".")?.pop()?.replaceAll("[x]","")??"",[r,a]=ye({type:e.resourceType,value:e},t);return r?jt.createElement(pe,{property:o,propertyType:a,value:r,maxWidth:200,ignoreMissingValues:!0,link:!1}):null}function Dx(e,o){let t=yx(o.expression,[{type:e.resourceType,value:e}]);return!t||t.length===0?null:jt.createElement(jt.Fragment,null,t.map((r,a)=>jt.createElement(pe,{key:`${a}-${t.length}`,propertyType:r.type,value:r.value,maxWidth:200,ignoreMissingValues:!0,link:!1})))}function Jl(e){let[o,t]=wx({search:JSON.parse(Fx(e.search))}),r=Xl(null),a=Xl(null);Mx(()=>{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=Bx(y),T=Ax(y),B=o.search.fields??[],A=Ox(k,T).filter(I=>!B.includes(I)).sort((I,O)=>I.localeCompare(O));return J.createElement(kx,{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},he(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},he(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 Ox(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(he(n));if(o)for(let n of Object.keys(o)){let f=he(n);!r.has(n)&&!a.has(f)&&(t.push(n),r.add(n),a.add(he(n)))}return t}import{Button as st,Group as Gx,Modal as Ux,NativeSelect as $l}from"@mantine/core";import{getSearchParameters as Qx,stringify as jl}from"@medplum/core";import R,{useEffect as zx,useRef as Zl,useState as La}from"react";import{formatDateTime as Ex,getSearchParameterDetails as Lx,globalSchema as Rx,Operator as Kl,SearchParameterType as Nx}from"@medplum/core";import lt from"react";function Zt(e){let{resourceType:o,filter:t}=e,r=Rx.types[o].searchParams?.[t.code];if(r){if(r.type==="reference"&&(t.operator===Kl.EQUALS||t.operator===Kl.NOT_EQUALS))return lt.createElement(Ee,{value:{reference:t.value}});let a=Lx(o,r);if(t.code==="_lastUpdated"||a.type===Nx.DATETIME)return lt.createElement(lt.Fragment,null,Ex(t.value))}return lt.createElement(lt.Fragment,null,t.value)}import{Checkbox as Hx,TextInput as Ea}from"@mantine/core";import{getSearchParameterDetails as Vx,SearchParameterType as No}from"@medplum/core";import io from"react";function Yt(e){let o=Vx(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(Hx,{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(Me,{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:qx(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 qx(e){if(e){let[o,t,r]=e.split("|");if(o)return{value:parseFloat(o),system:t,unit:r}}}function Yl(e){let[o,t]=La(JSON.parse(jl(e.search))),[r,a]=La(-1),n=Zl(o);n.current=o,zx(()=>{t(JSON.parse(jl(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=Qx(s)??{},i=o.filters||[];return R.createElement(Ux,{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(_l,{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(Wx,{key:`filter-${u.code}-${u.operator}-${u.value}-display`,resourceType:s,searchParams:l,filter:u,onEdit:()=>a(d),onDelete:()=>t(Ol(n.current,d))})),R.createElement(_l,{resourceType:s,searchParams:l,okText:"Add",onOk:f})))),R.createElement(Gx,{position:"right",mt:"xl"},R.createElement(st,{onClick:()=>e.onOk(n.current)},"OK")))}function Wx(e){let{filter:o}=e;return R.createElement("tr",null,R.createElement("td",null,he(o.code)),R.createElement("td",null,nt(o.operator)),R.createElement("td",null,R.createElement(Zt,{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 _l(e){let[o,t]=La(e.defaultValue??{}),r=Zl(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&&zl(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:he(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(Yt,{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 Xx,Grid as Ra,Modal as Jx}from"@mantine/core";import uo,{useState as Kx}from"react";function es(e){let[o,t]=Kx(e.defaultValue??"");if(!e.visible||!e.searchParam||!e.filter)return null;function r(){e.onOk({...e.filter,value:o})}return uo.createElement(Jx,{title:e.title,size:"xl",opened:e.visible,onClose:e.onCancel},uo.createElement(K,{onSubmit:r},uo.createElement(Ra,null,uo.createElement(Ra.Col,{span:10},uo.createElement(Yt,{resourceType:e.resourceType,searchParam:e.searchParam,defaultValue:o,autoFocus:!0,onChange:t})),uo.createElement(Ra.Col,{span:2},uo.createElement(Xx,{onClick:r,fullWidth:!0},"OK")))))}import{Menu as F}from"@mantine/core";import{Operator as de}from"@medplum/core";import m from"react";function os(e){if(!e.searchParams)return null;function o(n,f){a(Oa(e.search,n.code,f))}function t(n){a(_t(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($x,{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},he(n.code))))}function $x(e){switch(e.searchParam.type){case"date":return m.createElement(jx,{...e});case"number":case"quantity":return m.createElement(_x,{...e});case"reference":return m.createElement(Zx,{...e});case"string":case"token":case"uri":return m.createElement(Yx,{...e});default:return m.createElement(m.Fragment,null,"Unknown search param type: ",e.searchParam.type)}}function jx(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(It,{size:14}),onClick:()=>e.onPrompt(o,de.ENDS_BEFORE)},"Before..."),m.createElement(F.Item,{icon:m.createElement(xt,{size:14}),onClick:()=>e.onPrompt(o,de.STARTS_AFTER)},"After..."),m.createElement(F.Item,{icon:m.createElement(Tr,{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(Rl(e.search,t))},"Tomorrow"),m.createElement(F.Item,{icon:m.createElement(Ne,{size:14}),onClick:()=>e.onChange(Ll(e.search,t))},"Today"),m.createElement(F.Item,{icon:m.createElement(Ne,{size:14}),onClick:()=>e.onChange(El(e.search,t))},"Yesterday"),m.createElement(F.Divider,null),m.createElement(F.Item,{icon:m.createElement(Ne,{size:14}),onClick:()=>e.onChange(Vl(e.search,t))},"Next Month"),m.createElement(F.Item,{icon:m.createElement(Ne,{size:14}),onClick:()=>e.onChange(Hl(e.search,t))},"This Month"),m.createElement(F.Item,{icon:m.createElement(Ne,{size:14}),onClick:()=>e.onChange(Nl(e.search,t))},"Last Month"),m.createElement(F.Divider,null),m.createElement(F.Item,{icon:m.createElement(Ne,{size:14}),onClick:()=>e.onChange(ql(e.search,t))},"Year to date"),m.createElement(er,{...e}))}function _x(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(xt,{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(It,{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(er,{...e}))}function Zx(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(er,{...e}))}function Yx(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(kr,{size:14}),onClick:()=>e.onPrompt(o,de.CONTAINS)},"Contains..."),m.createElement(F.Item,{icon:m.createElement(Dr,{size:14}),onClick:()=>e.onPrompt(o,de.EQUALS)},"Does not contain..."),m.createElement(er,{...e}))}function er(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(br,{size:14}),onClick:()=>e.onChange(wa(e.search,t))},"Missing"),m.createElement(F.Item,{icon:m.createElement(Sr,{size:14}),onClick:()=>e.onChange(wa(e.search,t,!1))},"Not missing"),m.createElement(F.Divider,null),m.createElement(F.Item,{icon:m.createElement($r,{size:14}),onClick:()=>e.onClear(o)},"Clear filters"))}import{getElementDefinition as eI,getSearchParameter as oI,getSearchParameterDetails as tI,getSearchParameters as rI}from"@medplum/core";function ts(e){let o=e.resourceType,t=[];for(let r of e.fields||["id","_lastUpdated"])t.push(aI(o,r));return t}function aI(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=eI(e,o),r=oI(e,o.toLowerCase());if(t&&r)return{name:o,elementDefinition:t,searchParams:[r]};if(t){let a=rI(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=tI(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}},mI=fI(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 pI(e){let{classes:o}=mI(),t=v(),[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=cI(i);d.current=i;let c=s.total??"accurate",x=as(b=>{f(void 0),t.search(s.resourceType,dI({...s,total:c,fields:void 0}),b).then(W=>{u({...d.current,searchResponse:W}),l&&l(new qa(W))}).catch(W=>{u({...d.current,searchResponse:void 0}),f(W)})},[t,s,c,l]),y=as(()=>{u({...d.current,searchResponse:void 0}),x({cache:"reload"})},[x]);ns(()=>{x()},[x]);function k(b,W){b.stopPropagation();let fe=b.target.checked,te={...d.current.selected};fe?te[W]=!0:delete te[W],u({...d.current,selected:te})}function T(b){b.stopPropagation();let Re=b.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 b=d.current;if(!b.searchResponse?.entry||b.searchResponse.entry.length===0)return!1;for(let W of b.searchResponse.entry)if(W.resource?.id&&!b.selected[W.resource.id])return!1;return!0}function A(b){e.onChange&&e.onChange(new Va(b))}function I(b,W){if(ht(b.target)||b.button===2)return;H(b);let Re=b.button===1||b.ctrlKey||b.metaKey;!Re&&e.onClick&&e.onClick(new co(W,b)),Re&&e.onAuxClick&&e.onAuxClick(new co(W,b))}function O(){return!!(e.onExport??e.onExportCsv??e.onExportTransactionBundle)}if(ns(()=>{a(!1),t.requestSchema(e.search.resourceType).then(()=>a(!0)).catch(console.log)},[t,e.search.resourceType]),!r)return S.createElement(or,{style:{width:"100%",height:"100%"}},S.createElement(lI,null));let g=e.checkboxesEnabled,M=ts(s),Y=s.resourceType,ne=i.searchResponse,oo=ne?.entry?.map(b=>b.resource),C="subtle",N="gray",ke=16,Se=window.innerWidth<768;return S.createElement("div",{className:o.root,"data-testid":"search-control"},!e.hideToolbar&&S.createElement(tr,{position:"apart",mb:"xl"},S.createElement(tr,{spacing:2},S.createElement(Ho,{compact:!0,variant:C,color:N,leftIcon:S.createElement(Fr,{size:ke}),onClick:()=>u({...d.current,fieldEditorVisible:!0})},"Fields"),S.createElement(Ho,{compact:!0,variant:C,color:N,leftIcon:S.createElement(Nr,{size:ke}),onClick:()=>u({...d.current,filterEditorVisible:!0})},"Filters"),e.onNew&&S.createElement(Ho,{compact:!0,variant:C,color:N,leftIcon:S.createElement(Rr,{size:ke}),onClick:e.onNew},"New..."),!Se&&O()&&S.createElement(Ho,{compact:!0,variant:C,color:N,leftIcon:S.createElement(Kr,{size:ke}),onClick:e.onExport?e.onExport:()=>u({...d.current,exportDialogVisible:!0})},"Export..."),!Se&&e.onDelete&&S.createElement(Ho,{compact:!0,variant:C,color:N,leftIcon:S.createElement(Ko,{size:ke}),onClick:()=>e.onDelete(Object.keys(i.selected))},"Delete..."),!Se&&e.onBulk&&S.createElement(Ho,{compact:!0,variant:C,color:N,leftIcon:S.createElement(Pr,{size:ke}),onClick:()=>e.onBulk(Object.keys(i.selected))},"Bulk...")),S.createElement(tr,{spacing:2},ne&&S.createElement(Na,{size:"xs",color:"dimmed"},hI(s,ne.total),"-",CI(s,ne.total)," of"," ",`${c==="estimate"?"~":""}${ne.total?.toLocaleString()}`),S.createElement(nI,{title:"Refresh",onClick:y},S.createElement(zr,{size:"1.125rem"})))),S.createElement(iI,{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:b=>T(b)})),M.map(b=>S.createElement("th",{key:b.name},S.createElement(rs,{shadow:"md",width:240,position:"bottom-end"},S.createElement(rs.Target,null,S.createElement(uI,{className:o.control},S.createElement(tr,{position:"apart",noWrap:!0},S.createElement(Na,{weight:500,size:"sm"},he(b.name)),S.createElement(or,{className:o.icon},S.createElement(Cr,{size:14,stroke:1.5}))))),S.createElement(os,{search:e.search,searchParams:b.searchParams,onPrompt:(W,Re)=>{u({...d.current,filterDialogVisible:!0,filterDialogSearchParam:W,filterDialogFilter:Re})},onChange:W=>{A(W)}}))))),!e.hideFilters&&S.createElement("tr",null,g&&S.createElement("th",null),M.map(b=>S.createElement("th",{key:b.name},b.searchParams&&S.createElement(xI,{resourceType:Y,searchParams:b.searchParams,filters:e.search.filters}))))),S.createElement("tbody",null,oo?.map(b=>b&&S.createElement("tr",{key:b.id,className:o.tr,"data-testid":"search-control-row",onClick:W=>I(W,b),onAuxClick:W=>I(W,b)},g&&S.createElement("td",null,S.createElement("input",{type:"checkbox",value:"checked","data-testid":"row-checkbox","aria-label":`Checkbox for ${b.id}`,checked:!!i.selected[b.id],onChange:W=>k(W,b.id)})),M.map(W=>S.createElement("td",{key:W.name},Wl(b,W))))))),oo?.length===0&&S.createElement($e,null,S.createElement(or,{style:{height:150}},S.createElement(Na,{size:"xl",color:"dimmed"},"No results"))),ne?.total!==void 0&&ne.total>0&&S.createElement(or,{m:"md",p:"md"},S.createElement(sI,{value:II(s),total:gI(s,ne.total),onChange:b=>A(Gl(s,b)),getControlProps:b=>{switch(b){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(Jl,{search:e.search,visible:d.current.fieldEditorVisible,onOk:b=>{A(b),u({...d.current,fieldEditorVisible:!1})},onCancel:()=>{u({...d.current,fieldEditorVisible:!1})}}),S.createElement(Yl,{search:e.search,visible:d.current.filterEditorVisible,onOk:b=>{A(b),u({...d.current,filterEditorVisible:!1})},onCancel:()=>{u({...d.current,filterEditorVisible:!1})}}),S.createElement(Ml,{visible:d.current.exportDialogVisible,exportCsv:e.onExportCsv,exportTransactionBundle:e.onExportTransactionBundle,onCancel:()=>{u({...d.current,exportDialogVisible:!1})}}),S.createElement(es,{key:i.filterDialogSearchParam?.code,visible:d.current.filterDialogVisible,title:i.filterDialogSearchParam?.code?he(i.filterDialogSearchParam.code):"",resourceType:Y,searchParam:i.filterDialogSearchParam,filter:i.filterDialogFilter,defaultValue:"",onOk:b=>{A(Ro(e.search,b.code,b.operator,b.value)),u({...d.current,filterDialogVisible:!1})},onCancel:()=>{u({...d.current,filterDialogVisible:!1})}}))}var jw=S.memo(pI);function xI(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(Zt,{resourceType:e.resourceType,filter:t}))))}function II(e){return Math.floor((e.offset??0)/(e.count??Ga))+1}function gI(e,o){let t=e.count??Ga;return Math.ceil(o/t)}function hI(e,o){return Math.min(o,(e.offset??0)+1)}function CI(e,o){return Math.min(o,((e.offset??0)+1)*(e.count??Ga))}function PI(e){let o=v(),[t,r]=rr(!1),[a,n]=rr(),{query:f,fields:s}=e,[l,i]=rr(),[u,d]=rr({}),c=ls();c.current=l;let x=ls({});x.current=u,fs(()=>{n(void 0),o.graphql(f).then(i).catch(I=>n(bI(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){ht(I.target)||(H(I),I.button!==1&&e.onClick&&e.onClick(new co(O,I)),I.button===1&&e.onAuxClick&&e.onAuxClick(new co(O,I)))}if(fs(()=>{o.requestSchema(e.resourceType).then(()=>r(!0)).catch(console.log)},[o,e.resourceType]),!t)return ae.createElement(vI,null);let A=e.checkboxesEnabled;return ae.createElement("div",{onContextMenu:I=>H(I),"data-testid":"search-control"},ae.createElement(SI,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(Al,{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(yI,{onClick:()=>e.onBulk(Object.keys(x.current))},"Bulk..."))}var nO=ae.memo(PI);import{showNotification as TI}from"@mantine/notifications";import DI,{useEffect as ss,useMemo as kI,useState as BI}from"react";function dO(e){let o=e.medplum,t=e.navigate??AI,[r,a]=BI({profile:o.getProfile(),loading:!1});ss(()=>{function f(){a({...r,profile:o.getProfile()})}return o.addEventListener("change",f),()=>o.removeEventListener("change",f)},[o,r]),ss(()=>{function f(){TI({color:"red",message:"No connection to server",autoClose:!1})}return o.addEventListener("offline",f),()=>o.removeEventListener("offline",f)},[o]);let n=kI(()=>({...r,medplum:o,navigate:t}),[r,o,t]);return DI.createElement(hr.Provider,{value:n},e.children)}function AI(e){window.location.assign(e)}import{createReference as ar}from"@medplum/core";import FI,{useCallback as MI}from"react";function hO(e){let o=MI((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 FI.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 us,Button as wI,createStyles as OI,NativeSelect as EI,Stack as LI,TextInput as Qa}from"@mantine/core";import{getReferenceString as RI}from"@medplum/core";import q,{useEffect as is,useRef as ds,useState as it}from"react";var cs=OI(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 LO(e){let o=v(),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=ds();if(x.current=i,is(()=>{o.requestSchema("PlanDefinition").then(()=>a(!0)).catch(console.log)},[o]),is(()=>(u(UI(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(K,{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(ms,{actions:i.action||[],selectedKey:n,setSelectedKey:f,hoverKey:s,setHoverKey:l,onChange:k=>y("action",k)}),q.createElement(wI,{type:"submit"},"Save")))}function ms(e){let{classes:o}=cs(),t=ds();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(NI,{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(us,{href:"#",onClick:f=>{H(f),a({id:xs()})}},"Add action")))}function NI(e){let{classes:o,cx:t}=cs(),{action:r}=e,a=GI(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){H(u),e.setHoverKey(e.action.id)}let i=t(o.section,{[o.editing]:n,[o.hovering]:f&&!n});return q.createElement("div",{"data-testid":r.id,className:i,onClick:s,onMouseOver:l},n?q.createElement(VI,{action:r,actionType:a,onChange:e.onChange,selectedKey:e.selectedKey,setSelectedKey:e.setSelectedKey,hoverKey:e.hoverKey,setHoverKey:e.setHoverKey,onRemove:e.onRemove}):q.createElement(HI,{action:r,actionType:a}),q.createElement("div",{className:o.bottomActions},q.createElement(us,{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 HI(e){let{action:o,actionType:t}=e,[r,a]=ps(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(pe,{property:za,propertyType:a,value:r})))}function VI(e){let{action:o}=e,[t,r]=it(e.actionType);function a(n,f){e.onChange({...o,[n]:f})}return q.createElement(LI,{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(EI,{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(ms,{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(nr,{title:"Appointment",description:"The subject must schedule an appointment from the schedule.",resourceType:"Schedule",action:o,onChange:e.onChange});case"lab":return q.createElement(nr,{title:"Lab",description:"The subject must complete the following lab panel.",resourceType:"ActivityDefinition",action:o,onChange:e.onChange});case"questionnaire":return q.createElement(nr,{title:"Questionnaire",description:"The subject must complete the selected questionnaire.",resourceType:"Questionnaire",action:o,onChange:e.onChange});case"task":return q.createElement(nr,{title:"Task",description:"The subject must complete the following task.",resourceType:"ActivityDefinition",action:o,onChange:e.onChange});default:return null}})(),q.createElement(ve,{title:"Timing",description:"When the action should take place."},q.createElement(qI,{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 q.createElement(Ut,{name:o,resourceType:e.resourceType,defaultValue:r,loadOnFocus:!0,onChange:a=>{a?e.onChange({...e.action,definitionCanonical:RI(a)}):e.onChange({...e.action,definitionCanonical:void 0})}})}function qI(e){let o=e.action,t="timing",[r,a]=ps(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 GI(e){if(e.definitionCanonical?.startsWith("Schedule"))return"appointment";if(e.definitionCanonical?.startsWith("Questionnaire/"))return"questionnaire";if(e.definitionCanonical?.startsWith("ActivityDefinition/"))return"task"}function ps(e){return ye({type:"PlanDefinitionAction",value:e},"timing")}var Ua=1;function xs(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 UI(e){return{...e,action:Is(e.action)}}function Is(e){if(e)return e.map(o=>({...o,id:xs(o.id),action:Is(o.action)}))}import{Anchor as De,Box as _a,Button as ig,createStyles as ug,Group as dg,NativeSelect as cg,Space as mg,Textarea as pg,TextInput as Za,Title as xg}from"@mantine/core";import{getElementDefinition as Ig,isResource as gg}from"@medplum/core";import P,{useEffect as Ds,useRef as hg,useState as ur}from"react";import{Checkbox as KI,Group as $I,MultiSelect as jI,NativeSelect as _I,Radio as Ss,Textarea as ZI,TextInput as ut}from"@mantine/core";import{capitalize as Ja,deepEquals as YI,formatCoding as Ka,getElementDefinition as eg,getTypedPropertyValue as Ue,stringify as bs}from"@medplum/core";import Z from"react";import{deepClone as QI,evalFhirPathTyped as zI,formatCoding as WI,getExtension as gs,getTypedPropertyValue as Wa}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 hs(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=vs(o,r.question);if(r.operator==="exists"&&!r.answerBoolean&&!a?.length){if(t==="any")return!0;continue}let{anyMatch:n,allMatch:f}=JI(r,a,t);if(t==="any"&&n)return!0;if(t==="all"&&!f)return!1}return t!=="any"}function ys(e,o,t){return e.map(r=>{let a=t.answerOption?.find(f=>WI(f.valueCoding)===r||f[o]===r),n=Wa({type:"QuestionnaireItemAnswerOption",value:a},"value");return{[o]:n?.value}})}function vs(e,o){if(e)for(let t of e){if(t.linkId===o)return t.answer;if(t.item){let r=vs(t.item,o);if(r)return r}}}function XI(e,o,t){if(t==="exists")return!!e===o.value;if(e){let r=t==="="||t==="!="?t?.replace("=","~"):t,[{value:a}]=zI(`%actualAnswer ${r} %expectedAnswer`,[e],{actualAnswer:e,expectedAnswer:o});return a}else return!1}function JI(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(XI(l,a,i)?n=!0:f=!1,t==="any"&&n)break}return{anyMatch:n,allMatch:f}}function lr(e){let o=gs(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=QI(e),r=gs(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 ir(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=ag(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(Rt,{key:e.item.linkId,title:e.item.text,htmlFor:e.item.linkId},Z.createElement(KI,{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,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,defaultValue:s?.value,onChange:l=>r({valueInteger:l.currentTarget.valueAsNumber},t)});case"date":return Z.createElement(ut,{type:"date",id:n,name:n,defaultValue:s?.value,onChange:l=>r({valueDate:l.currentTarget.value},t)});case"dateTime":return Z.createElement(Me,{name:n,defaultValue:s?.value,onChange:l=>r({valueDateTime:l},t)});case"time":return Z.createElement(ut,{type:"time",id:n,name:n,defaultValue:s?.value,onChange:l=>r({valueTime:l.currentTarget.value},t)});case"string":case"url":return Z.createElement(ut,{id:n,name:n,defaultValue:s?.value,onChange:l=>r({valueString:l.currentTarget.value},t)});case"text":return Z.createElement(ZI,{id:n,name:n,defaultValue:s?.value,onChange:l=>r({valueString:l.currentTarget.value},t)});case"attachment":return Z.createElement($I,{py:4},Z.createElement(vt,{name:n,defaultValue:s?.value,onChange:l=>r({valueAttachment:l},t)}));case"reference":return Z.createElement(wo,{name:n,targetTypes:lr(o),defaultValue:s?.value,onChange:l=>r({valueReference:l},t)});case"quantity":return Z.createElement(Pe,{name:n,defaultValue:s?.value,onChange:l=>r({valueQuantity:l},t),disableWheel:!0});case"choice":case"open-choice":return ng(o)?Z.createElement(og,{name:n,item:o,initial:f,allResponses:e.allResponses,index:t,groupSequence:e.groupSequence,onChangeAnswer:l=>r(l,t)}):Z.createElement(tg,{name:n,item:o,initial:f,allResponses:e.allResponses,onChangeAnswer:l=>r(l,t)});default:return null}}function og(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}=fg(e.item),i=lg(e.allResponses,t,e.groupSequence);return Z.createElement(jI,{data:l,placeholder:"Select items",searchable:!0,defaultValue:i||[Xa(a)],onChange:u=>{let d=ys(u,s,t);e.onChangeAnswer(d)}})}return Z.createElement(_I,{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:(Ka(f?.value)||f?.value)??Xa(a),data:n})}function tg(e){let{name:o,item:t,initial:r,onChangeAnswer:a,allResponses:n}=e;return t.answerValueSet?Z.createElement(Nt,{name:o,binding:t.answerValueSet,onChange:f=>a({valueCoding:f})}):Z.createElement(rg,{name:o,item:t,initial:r,allResponses:n,onChangeAnswer:a})}function rg(e){let{name:o,item:t,initial:r,onChangeAnswer:a}=e,n=eg("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&&bs(y)===bs(f)&&(l=x),s.push([x,y])}let i=ja(e.allResponses,t,e.index,e.groupSequence),u=sg(s,i);return Z.createElement(Ss.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(Ss,{key:d,id:d,value:d,py:4,label:Z.createElement(pe,{property:n,propertyType:c.type,value:c.value})})))}function ag(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 ng(e){return!!e.extension?.some(o=>o.url==="http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl"&&o.valueCodeableConcept?.coding?.[0]?.code==="drop-down")}function fg(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:Ps(n,r),label:Ps(n,r)}));return{propertyName:r,data:a}}function Ps(e,o){return Ka(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 $a(e,o){let t=[];for(let r of e)r.linkId===o&&t.push(r),r.item&&(t=t.concat($a(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=$a(e,o.linkId??"")[r]?.answer;return Ts(n?.[t]??{})}function lg(e,o,t=0){let a=$a(e,o.linkId??"")[t]?.answer;return a?a.map(f=>Ts(f)).map(f=>Ka(f?.value)||f?.value):[]}function sg(e,o){return e.find(t=>YI(t[1].value,o?.value))?.[0]}var Cg=ug(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 m0(e){let o=v(),t=X(e.questionnaire),[r,a]=ur(!1),[n,f]=ur(),[s,l]=ur(),[i,u]=ur();function d(){u(void 0)}function c(){l(void 0)}return Ds(()=>{o.requestSchema("Questionnaire").then(()=>a(!0)).catch(console.log)},[o]),Ds(()=>(f(bg(t??{resourceType:"Questionnaire"})),document.addEventListener("mouseover",d),document.addEventListener("click",c),()=>{document.removeEventListener("mouseover",d),document.removeEventListener("click",c)}),[t]),!r||!n?null:P.createElement("div",null,P.createElement(K,{testid:"questionnaire-form",onSubmit:()=>e.onSubmit(n)},P.createElement(ks,{item:n,selectedKey:s,setSelectedKey:l,hoverKey:i,setHoverKey:u,onChange:f}),P.createElement(ig,{type:"submit"},"Save")))}function ks(e){let{classes:o,cx:t}=Cg(),r=e.item,a=e.item,n=gg(e.item),f=n||a.type==="group",s=a.linkId??"[untitled]",l=e.selectedKey===e.item.id,i=e.hoverKey===e.item.id,u=hg();u.current=e.item;function d(g){H(g),e.setSelectedKey(e.item.id)}function c(g){H(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=Dg(e.item.item,g,M);e.onChange({...e.item,item:Y})}let O=t(o.section,{[o.editing]:l,[o.hovering]:i&&!l});return P.createElement("div",{"data-testid":a.linkId,className:O,onClick:d,onMouseOver:c},P.createElement("div",{className:o.questionBody},l?P.createElement(P.Fragment,null,n&&P.createElement(Za,{size:"xl",defaultValue:r.title,onChange:g=>T("title",g.currentTarget.value)}),!n&&P.createElement(pg,{autosize:!0,minRows:2,defaultValue:a.text,onChange:g=>T("text",g.currentTarget.value)}),a.type==="reference"&&P.createElement(Sg,{item:a,onChange:B}),hs(a)&&P.createElement(yg,{item:a,onChange:g=>B(g)})):P.createElement(P.Fragment,null,r.title&&P.createElement(xg,null,r.title),a.text&&P.createElement("div",null,a.text),!f&&P.createElement(ir,{item:a,index:0,allResponses:[],onChange:()=>{}}))),a.item?.map((g,M)=>P.createElement("div",{key:g.id},P.createElement(ks,{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&&P.createElement("div",{className:o.topActions},l?P.createElement(P.Fragment,null,P.createElement(Za,{size:"xs",className:o.linkIdInput,defaultValue:a.linkId,onChange:g=>T("linkId",g.currentTarget.value)}),!f&&P.createElement(cg,{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"}]})):P.createElement("div",null,s)),!n&&P.createElement(_a,{className:o.movementActions},P.createElement(_a,{className:o.columnAlignment},!e.isFirst&&P.createElement(De,{href:"#",onClick:g=>{g.preventDefault(),e.onMoveUp&&e.onMoveUp()}},P.createElement(vr,{"data-testid":"up-button",size:15,className:o.movementIcons})),!e.isLast&&P.createElement(De,{href:"#",onClick:g=>{g.preventDefault(),e.onMoveDown&&e.onMoveDown()}},P.createElement(yr,{"data-testid":"down-button",size:15,className:o.movementIcons})))),P.createElement("div",{className:o.bottomActions},f&&P.createElement(P.Fragment,null,P.createElement(De,{href:"#",onClick:g=>{g.preventDefault(),y({id:mo(),linkId:on("q"),type:"string",text:"Question"})}},"Add item"),P.createElement(De,{href:"#",onClick:g=>{g.preventDefault(),y({id:mo(),linkId:on("g"),type:"group",text:"Group"})}},"Add group")),n&&P.createElement(De,{href:"#",onClick:g=>{g.preventDefault(),y(Tg())}},"Add Page"),l&&!n&&P.createElement(P.Fragment,null,P.createElement(De,{href:"#",onClick:g=>{g.preventDefault(),e.onRepeatable&&e.onRepeatable(a)}},a.repeats?"Remove Repeatable":"Make Repeatable"),P.createElement(De,{href:"#",onClick:g=>{g.preventDefault(),e.onRemove&&e.onRemove()}},"Remove"))))}function yg(e){let o=Ig("QuestionnaireItemAnswerOption","value[x]"),t=e.item.answerOption??[];return P.createElement("div",null,e.item.answerValueSet!==void 0?P.createElement(Za,{placeholder:"Enter Value Set",defaultValue:e.item.answerValueSet,onChange:r=>e.onChange({...e.item,answerValueSet:r.target.value})}):P.createElement(vg,{options:t,property:o,item:e.item,onChange:e.onChange}),P.createElement(_a,{display:"flex"},P.createElement(De,{href:"#",onClick:r=>{H(r),e.onChange({...e.item,answerValueSet:void 0,answerOption:[...t,{id:mo()}]})}},"Add choice"),P.createElement(mg,{w:"lg"}),P.createElement(De,{href:"#",onClick:r=>{H(r),e.onChange({...e.item,answerOption:[],answerValueSet:""})}},"Add value set")))}function vg(e){return P.createElement("div",null,e.options.map(o=>{let[t,r]=ye({type:"QuestionnaireItemAnswerOption",value:o},"value");return P.createElement("div",{key:o.id,style:{display:"flex",flexDirection:"row",justifyContent:"space-between",alignItems:"center",width:"80%"}},P.createElement("div",null,P.createElement(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})}})),P.createElement("div",null,P.createElement(De,{href:"#",onClick:a=>{H(a),e.onChange({...e.item,answerOption:e.options.filter(n=>n.id!==o.id)})}},"Remove")))}))}function Sg(e){let o=lr(e.item)??[];return P.createElement(P.Fragment,null,o.map((t,r)=>P.createElement(dg,{key:`${t}-${r}`},P.createElement(Po,{name:"resourceType",placeholder:"Resource Type",defaultValue:t,onChange:a=>{e.onChange(sr(e.item,o.map(n=>n===t?a:n)))}}),P.createElement(De,{href:"#",onClick:a=>{H(a),e.onChange(sr(e.item,o.filter(n=>n!==t)))}},"Remove"))),P.createElement(De,{href:"#",onClick:t=>{H(t),e.onChange(sr(e.item,[...o,""]))}},"Add Resource Type"))}var Ya=1,en=1;function on(e){return e+Ya++}function mo(){return"id-"+en++}function bg(e){return{...e,id:e.id||mo(),item:Bs(e.item)}}function Bs(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:Bs(o.item),answerOption:Pg(o.answerOption)}))}function Pg(e){if(e)return e.map(o=>({...o,id:o.id||mo()}))}function Tg(){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 Dg(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 ws,Button as tn,Group as kg,Stack as Bg,Stepper as As,Title as Os}from"@mantine/core";import{createReference as Ag,getExtension as Fg,getReferenceString as Es}from"@medplum/core";import Q,{useEffect as Fs,useState as Vo}from"react";function Ls(e){let o=v(),t=o.getProfile(),[r,a]=Vo(!1),n=X(e.questionnaire),[f,s]=Vo(),[l,i]=Vo(0);Fs(()=>{o.requestSchema("Questionnaire").then(()=>o.requestSchema("QuestionnaireResponse")).then(()=>a(!0)).catch(console.log)},[o]),Fs(()=>{s(n?wg(n):void 0)},[n]);function u(y){let k=f?.item??[],B={resourceType:"QuestionnaireResponse",item:Hs(k,y)};s(B)}if(!r||!n)return null;let d=Rg(n),c=()=>i(y=>y+1),x=()=>i(y=>y-1);return Q.createElement(K,{testid:"questionnaire-form",onSubmit:()=>{e.onSubmit&&f&&e.onSubmit({...f,questionnaire:Es(n),subject:e.subject,source:Ag(t),authored:new Date().toISOString(),status:"completed"})}},n.title&&Q.createElement(Os,null,n.title),n.item&&Q.createElement(Rs,{items:n.item??[],allResponses:f?.item??[],onChange:u,renderPages:d>1,activePage:l}),Q.createElement(Mg,{activePage:l,numberOfPages:d,nextStep:c,prevStep:x,submitButtonText:e.submitButtonText}))}function Rs(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(As.Step,{label:n.text,key:n.linkId},Q.createElement(Ms,{key:`${n.linkId}-${f}`,item:n,index:f,allResponses:e.allResponses,currentResponseItems:o,groupSequence:e.groupSequence,setResponseItem:r})):Q.createElement(Ms,{key:`${n.linkId}-${f}`,item:n,index:f,groupSequence:e.groupSequence,allResponses:e.allResponses,currentResponseItems:o,setResponseItem:r}));return e.renderPages?Q.createElement(As,{active:e.activePage??0,allowNextStepsSelect:!1,p:6},a):Q.createElement(Bg,null,a)}function Ms(e){return Cs(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(ve,{key:e.item.linkId,htmlFor:e.item.linkId,title:e.item.text},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:Vg(f,n),linkId:o.linkId,text:o.text,item:r})}return o.type==="group"?Q.createElement(Ng,{key:e.item.linkId,text:o.text??"",item:o??[],allResponses:e.allResponses,onChange:t}):Q.createElement(Hg,{item:e.item,key:e.item.linkId},({index:r})=>Q.createElement(ir,{...e,index:r}))}function Mg(e){let o=e.activePage>0,t=e.activePage<e.numberOfPages-1,r=e.activePage===e.numberOfPages-1;return Q.createElement(kg,{position:"right",mt:"xl",spacing:"xs"},o&&Q.createElement(tn,{onClick:e.prevStep},"Back"),t&&Q.createElement(tn,{onClick:e.nextStep},"Next"),r&&Q.createElement(tn,{type:"submit"},e.submitButtonText??"Submit"))}function wg(e){return{resourceType:"QuestionnaireResponse",questionnaire:Es(e),item:an(e.item)}}function an(e){return e?.map(Og)??[]}function Og(e){return{id:Ns(),linkId:e.linkId,text:e.text,item:an(e.item),answer:e.initial?.map(Lg)??[]}}var Eg=1;function Ns(){return"id-"+Eg++}function Lg(e){return{...e}}function Rg(e){let o=e?.item?.[0];return o&&Fg(o,"http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl")?.valueCodeableConcept?.coding?.[0]?.code==="page"?e.item.length:1}function Ng(e){let[o,t]=Vo(qg(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(Os,{order:3,mb:"md"},e.text),Q.createElement(Rs,{items:r.item??[],allResponses:e.allResponses,groupSequence:n,onChange:f=>e.onChange(f,n)}))),e.item.repeats&&Q.createElement(ws,{onClick:()=>t(a=>a+1)},"Add Group"))}function Hg(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(ws,{onClick:()=>t(a=>a+1)},"Add Item"))}function Vg(e,o){return e.length===0||e.length<o+1?Ns():e[o].id}function qg(e,o){let t=o.filter(r=>r.linkId===e.linkId).length;return t>0?t:1}function Gg(e,o){let t=Hs(e.item??[],o.item??[]);return{...o,item:t,answer:o.answer&&o.answer.length>0?o.answer:e.answer}}function Ug(e,o){let t=[],r=Math.max(e.length,o.length);for(let a=0;a<r;a++)e[a]&&o[a]?t.push(Gg(e[a],o[a])):o[a]&&t.push(o[a]);return t}function Hs(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(Ug(a,n))}return t}import{ActionIcon as dr,Button as Qg,createStyles as zg,Divider as Wg,Group as dt,NativeSelect as nn,Stack as cr,Text as Xg,TextInput as Jg}from"@mantine/core";import{formatRange as Vs,getCodeBySystem as Kg}from"@medplum/core";import z,{useEffect as $g,useState as fn}from"react";var jg=zg(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"}})),_g=["gender","age","gestationalAge","context","appliesTo","category"],Zg={definition:{resourceType:"ObservationDefinition"},onSubmit:()=>{}};function E0(e){e=Object.assign(Zg,e);let o=e.definition,[t,r]=fn([]),[a,n]=fn(1),[f,s]=fn(1);return $g(()=>{let y=oh(o,s);r(th(y.qualifiedInterval||[],n))},[o]),z.createElement(K,{testid:"reference-range-editor",onSubmit:l},z.createElement(cr,null,t.map(y=>z.createElement(Yg,{unit:ah(o.quantitativeDetails?.unit),onChange:d,onAdd:c,onRemove:x,onRemoveGroup:u,key:`group-${y.id}`,intervalGroup:y}))),z.createElement(dr,{title:"Add Group",size:"sm",onClick:y=>{H(y),i({id:`group-id-${a}`,filters:{},intervals:[]}),n(k=>k+1)}},z.createElement(po,null)),z.createElement(dt,{position:"right"},z.createElement(Qg,{type:"submit"},"Save")));function l(){let y=t.flatMap(k=>k.intervals).filter(k=>!nh(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 Yg(e){let{intervalGroup:o,unit:t}=e,{classes:r}=jg();return z.createElement($e,{"data-testid":o.id,className:r.section},z.createElement(cr,{spacing:"lg"},z.createElement(dt,{position:"right"},z.createElement(dr,{title:"Remove Group","data-testid":`remove-group-button-${o.id}`,key:`remove-group-button-${o.id}`,size:"sm",onClick:a=>{H(a),e.onRemoveGroup(o)}},z.createElement(We,null))),z.createElement(eh,{intervalGroup:o,onChange:e.onChange}),z.createElement(Wg,null),o.intervals.map(a=>z.createElement(cr,{key:`interval-${a.id}`,spacing:"xs"},z.createElement(dt,null,z.createElement(Jg,{key:`condition-${a.id}`,"data-testid":`condition-${a.id}`,defaultValue:a.condition,label:"Condition: ",size:"sm",onChange:n=>{H(n),e.onChange(o.id,{...a,condition:n.currentTarget.value.trim()})}}),z.createElement(dr,{title:"Remove Interval",size:"sm",key:`remove-interval-${a.id}`,"data-testid":`remove-interval-${a.id}`,onClick:n=>{H(n),e.onRemove(o.id,a)}},z.createElement(We,null))),z.createElement(ot,{onChange:n=>{e.onChange(o.id,{...a,range:n})},key:`range-${a.id}`,name:`range-${a.id}`,defaultValue:a.range}))),z.createElement(dr,{title:"Add Interval",size:"sm",onClick:a=>{H(a),e.onAdd(o.id,{range:{low:{unit:t},high:{unit:t}}})}},z.createElement(po,null))))}function eh(e){let{intervalGroup:o,onChange:t}=e;o.filters.age||(o.filters.age={});for(let r of["low","high"])o.filters.age[r]?.unit||(o.filters.age[r]={...o.filters.age[r],unit:"years",system:"http://unitsofmeasure.org"});return z.createElement(cr,{style:{maxWidth:"50%"}},z.createElement(dt,null,z.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})}}})),z.createElement(dt,{spacing:"xs"},z.createElement(Xg,{component:"label",htmlFor:`div-age-${o.id}`},"Age:"),z.createElement("div",{id:`div-age-${o.id}`},z.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})}}))),z.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"}]}})}}}),z.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 oh(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 th(e,o){let t=1,r={};for(let a of e){let n=rh(a);n in r||(r[n]={id:`group-id-${t++}`,filters:Object.fromEntries(_g.map(f=>[f,a[f]])),intervals:[]}),r[n].intervals.push(a)}return o(t),Object.values(r)}function rh(e){return[`gender=${e.gender}`,`age=${Vs(e.age)}`,`gestationalAge=${Vs(e.gestationalAge)}`,`context=${e.context?.text}`,`appliesTo=${e.appliesTo?.map(t=>t.text).join("+")}`,`category=${e.category}`].join(":")}function ah(e){return e&&(Kg(e,"http://unitsofmeasure.org")||e.text)}function nh(e){return e.range?.low?.value===void 0&&e.range?.high?.value===void 0}import{Button as qs,Grid as mr,Text as fh}from"@mantine/core";import{formatDateTime as lh,getReferenceString as sh}from"@medplum/core";import Ie,{useEffect as ih,useState as Gs}from"react";function z0(e){let o=v(),t=X(e.value),[r,a]=Gs(!1),[n,f]=Gs();if(ih(()=>{t&&!r&&(o.executeBatch(s(t)).then(f).catch(console.log),a(!0))},[o,t,r]),!t||!n)return null;return Ie.createElement(mr,null,t.action?.map((i,u)=>{let d=i.resource&&l(i.resource),c=d?.input?.[0]?.valueReference,x=d?.output?.[0]?.valueReference;return Ie.createElement(Ie.Fragment,{key:`action-${u}`},Ie.createElement(mr.Col,{span:1,p:"md"},d?.status==="completed"?Ie.createElement(Br,null):Ie.createElement(Xr,{color:"gray"})),Ie.createElement(mr.Col,{span:9,p:"xs"},Ie.createElement(fh,{weight:500},i.title),i.description&&Ie.createElement("div",null,i.description),Ie.createElement("div",null,"Last edited by\xA0",Ie.createElement(Ee,{value:d?.meta?.author}),"\xA0on\xA0",lh(d?.meta?.lastUpdated)),Ie.createElement("div",null,"Status: ",Ie.createElement(Xt,{status:d?.status||"unknown"}))),Ie.createElement(mr.Col,{span:2,p:"md"},c&&!x&&Ie.createElement(qs,{onClick:()=>e.onStart(d,c)},"Start"),c&&x&&Ie.createElement(qs,{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===sh(u.resource))return u.resource}}import{createStyles as Ih}from"@mantine/core";import Ce,{useEffect as gh,useState as hh}from"react";import{stringify as mh}from"@medplum/core";function pr(e,o){let t=uh(e,o);return dh(t,e,o)}function uh(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:ch(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 dh(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 ch(e){return e&&!e.snake&&e.prev?e.prev:e}function Us(e){let o=e.entry.filter(r=>!!r.resource).map(r=>({meta:r.resource?.meta,lines:mh(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 ph(t,o),xh(t),t}function ph(e,o){for(let t=1;t<o.length;t++){let r=pr(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 xh(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 Qs(e,o){return`/${e.resourceType}/${e.id}/_history/${o}`}function zs(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 Ch=Ih(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 a1(e){let{classes:o}=Ch(),t=v(),[r,a]=hh(e.history);if(gh(()=>{!e.history&&e.resourceType&&e.id&&t.readHistory(e.resourceType,e.id).then(a).catch(console.log)},[t,e.history,e.resourceType,e.id]),!r)return Ce.createElement("div",null,"Loading...");let n=r.entry?.[0]?.resource;if(!n)return null;let f=Us(r);return Ce.createElement("div",{className:o.container},Ce.createElement("table",{className:o.root},Ce.createElement("tbody",null,f.map((s,l)=>Ce.createElement("tr",{key:"row-"+l,className:s.span>0?o.startRow:o.normalRow},s.span>0&&Ce.createElement(Ce.Fragment,null,Ce.createElement("td",{className:o.author,rowSpan:s.span},Ce.createElement(_e,{value:s.meta.author,link:!0})),Ce.createElement("td",{className:o.dateTime,rowSpan:s.span},Ce.createElement(se,{to:Qs(n,s.meta.versionId)},zs(s.meta.lastUpdated)))),Ce.createElement("td",{className:o.lineNumber},l+1),Ce.createElement("td",{className:o.line},Ce.createElement("pre",{className:o.pre},s.value)))))))}import{createStyles as yh}from"@mantine/core";import{stringify as Ws}from"@medplum/core";import eo from"react";var vh=yh(e=>({removed:{color:e.colors.red[7],textDecoration:"line-through"},added:{color:e.colors.green[7]}}));function d1(e){let o=e.original,t=e.revised;e.ignoreMeta&&(o={...o,meta:void 0},t={...t,meta:void 0});let r=Ws(o,!0).match(/[^\r\n]+/g),a=Ws(t,!0).match(/[^\r\n]+/g),n=pr(r,a);return eo.createElement("pre",{style:{color:"gray"}},n.map((f,s)=>eo.createElement(Sh,{key:"delta"+s,delta:f})))}function Sh(e){let{classes:o}=vh();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
66
  `)),e.delta.revised.lines.length>0&&eo.createElement("div",{className:o.added},e.delta.revised.lines.join(`
67
- `)),"...",eo.createElement("br",null))}import{Table as Tg}from"@mantine/core";import{formatDateTime as kg,normalizeErrorString as Bg}from"@medplum/core";import ce,{useEffect as Ag,useState as Mg}from"react";function SO(e){let o=S(),[t,r]=Mg(e.history);return Ag(()=>{!e.history&&e.resourceType&&e.id&&o.readHistory(e.resourceType,e.id).then(r).catch(console.log)},[o,e.history,e.resourceType,e.id]),t?ce.createElement(Tg,{withBorder:!0,withColumnBorders:!0},ce.createElement("thead",null,ce.createElement("tr",null,ce.createElement("th",null,"Author"),ce.createElement("th",null,"Date"),ce.createElement("th",null,"Version"))),ce.createElement("tbody",null,t.entry?.map((a,n)=>ce.createElement(Fg,{key:"entry-"+n,entry:a})))):ce.createElement("div",null,"Loading...")}function Fg(e){let{response:o,resource:t}=e.entry;return t?ce.createElement("tr",null,ce.createElement("td",null,ce.createElement(je,{value:t.meta?.author,link:!0})),ce.createElement("td",null,kg(t.meta?.lastUpdated)),ce.createElement("td",null,ce.createElement(se,{to:wg(t)},t.meta?.versionId))):ce.createElement("tr",null,ce.createElement("td",{colSpan:3},Bg(o?.outcome)))}function wg(e){return`/${e.resourceType}/${e.id}/_history/${e.meta?.versionId}`}import{Button as Og,createStyles as Eg,Stack as Lg,Text as Rg}from"@mantine/core";import{getReferenceString as Ng}from"@medplum/core";import oe,{useEffect as Hg,useRef as Vg,useState as pt}from"react";var qg=Eg(e=>({container:{display:"flex",minHeight:400},info:{minWidth:300,padding:20,borderRight:`1px solid ${e.colors.gray[3]}`},selection:{minWidth:300,padding:20}}));function OO(e){let{classes:o}=qg(),t=S(),r=X(e.schedule),a=X(e.questionnaire),[n,f]=pt(),s=Vg();s.current=n;let[l,i]=pt(ma()),[u,d]=pt(),[c,g]=pt(),[y,A]=pt();if(Hg(()=>{r?(f([]),t.searchResources("Slot",new URLSearchParams([["_count",(30*24).toString()],["schedule",Ng(r)],["start","gt"+Gg(l)],["start","lt"+Ug(l)]])).then(f).catch(console.log)):f(void 0)},[t,r,l]),!r||!n||!a)return null;let v=r.actor?.[0];return oe.createElement("div",{className:o.container,"data-testid":"scheduler"},oe.createElement("div",{className:o.info},v&&oe.createElement(Ce,{value:v,size:"xl"}),v&&oe.createElement(Rg,{size:"xl",weight:500},oe.createElement(Le,{value:v})),oe.createElement("p",null,"1 hour"),u&&oe.createElement("p",null,u.toLocaleDateString()),c&&oe.createElement("p",null,vs(new Date(c.start)))),oe.createElement("div",{className:o.selection},!u&&oe.createElement("div",null,oe.createElement("h3",null,"Select date"),oe.createElement(Vf,{slots:n,onChangeMonth:i,onClick:d})),u&&!c&&oe.createElement("div",null,oe.createElement("h3",null,"Select time"),oe.createElement(Lg,null,n.map(D=>{let B=new Date(D.start);return B.getTime()>u.getTime()&&B.getTime()<u.getTime()+24*3600*1e3&&oe.createElement("div",{key:D.id},oe.createElement(Og,{variant:"outline",style:{width:150},onClick:()=>g(D)},vs(B)))}))),u&&c&&!y&&oe.createElement(cs,{questionnaire:a,submitButtonText:"Next",onSubmit:A}),u&&c&&y&&oe.createElement("div",null,oe.createElement("h3",null,"You're all set!"),oe.createElement("p",null,"Check your email for a calendar invite."))))}function Gg(e){return Ss(e.getTime())}function Ug(e){return Ss(e.getTime()+31*24*60*60*1e3)}function Ss(e){return new Date(Math.max(Date.now(),e)).toISOString()}function vs(e){return e.toLocaleTimeString([],{hour:"numeric",minute:"2-digit"})}import{createReference as ir}from"@medplum/core";import Qg from"react";function qO(e){return Qg.createElement(Ze,{value:e.serviceRequest,loadTimelineResources:async(o,t,r)=>{let a=`${t}/${r}`,n=100;return Promise.allSettled([o.readHistory("ServiceRequest",r),o.search("Communication",{"based-on":a,_count:n}),o.search("DiagnosticReport",{"based-on":a,_count:n}),o.search("Media",{"based-on":a,_count:n}),o.search("DocumentReference",{related:a,_count:n}),o.search("Task",{_filter:`based-on eq ${a} or focus eq ${a} or subject eq ${a}`,_count:n})])},createCommunication:(o,t,r)=>({resourceType:"Communication",status:"completed",basedOn:[ir(o)],subject:o.subject,sender:ir(t),sent:new Date().toISOString(),payload:[{contentString:r}]}),createMedia:(o,t,r)=>({resourceType:"Media",status:"completed",basedOn:[ir(o)],subject:o.subject,operator:ir(t),issued:new Date().toISOString(),content:r})})}import{normalizeOperationOutcome as uh}from"@medplum/core";import xr,{useEffect as dh,useState as Ms}from"react";import{Anchor as bs,Button as zg,Center as Wg,Group as Xg,Stack as Jg,Text as $g,TextInput as Kg,Title as jg}from"@mantine/core";import{normalizeOperationOutcome as _g}from"@medplum/core";import Fe,{useState as Zg}from"react";function ur(e){let o=S(),[t,r]=Zg();return Fe.createElement($,{style:{maxWidth:400},onSubmit:async a=>{try{e.handleAuthResponse(await o.startNewProject({login:e.login,projectName:a.projectName}))}catch(n){r(_g(n))}}},Fe.createElement(Wg,{sx:{flexDirection:"column"}},Fe.createElement(Ye,{size:32}),Fe.createElement(jg,null,"Create project")),Fe.createElement(Jg,{spacing:"xl"},Fe.createElement(Kg,{name:"projectName",label:"Project Name",placeholder:"My Project",required:!0,autoFocus:!0,error:xe(t,"firstName")}),Fe.createElement($g,{color:"dimmed",size:"xs"},"By clicking submit you agree to the Medplum"," ",Fe.createElement(bs,{href:"https://www.medplum.com/privacy"},"Privacy\xA0Policy")," and ",Fe.createElement(bs,{href:"https://www.medplum.com/terms"},"Terms\xA0of\xA0Service"),".")),Fe.createElement(Xg,{position:"right",mt:"xl",noWrap:!0},Fe.createElement(zg,{type:"submit"},"Create project")))}import{Anchor as pr,Button as th,Center as rh,Checkbox as ah,Divider as nh,Group as Ts,PasswordInput as fh,Stack as lh,Text as ks,TextInput as on}from"@mantine/core";import{normalizeOperationOutcome as Bs}from"@medplum/core";import Y,{useEffect as sh,useState as ih}from"react";import Yg,{useEffect as eh,useRef as oh,useState as en}from"react";function dr(e,o){let t=document.getElementsByTagName("head")[0],r=document.createElement("script");r.async=!0,r.src=e,r.onload=o??null,t.appendChild(r)}function cr(e){let o=S(),{googleClientId:t,handleGoogleCredential:r}=e,a=oh(null),[n,f]=en(typeof google<"u"),[s,l]=en(!1),[i,u]=en(!1);return eh(()=>{if(typeof google>"u"){dr("https://accounts.google.com/gsi/client",()=>f(!0));return}s||(google.accounts.id.initialize({client_id:t,callback:r}),l(!0)),a.current&&!i&&(google.accounts.id.renderButton(a.current,{}),u(!0))},[o,t,s,n,a,i,r]),t?Yg.createElement("div",{ref:a}):null}function mr(e){if(e)return e;if(typeof window<"u"){let o=window.location.protocol+"//"+window.location.host;if(("undefined"?.split(",")??[]).includes(o))return"921088377005-3j1sa10vr6hj86jgmdfh2l53v3mp7lfi.apps.googleusercontent.com"}}function Ps(e){typeof grecaptcha>"u"&&dr("https://www.google.com/recaptcha/api.js?render="+e)}function Ds(e){return new Promise((o,t)=>{grecaptcha.ready(async()=>{try{o(await grecaptcha.execute(e,{action:"submit"}))}catch(r){t(r)}})})}function As(e){let o=mr(e.googleClientId),t=e.recaptchaSiteKey,r=S(),[a,n]=ih(),f=Ft(a,void 0);return sh(()=>{t&&Ps(t)},[t]),Y.createElement($,{style:{maxWidth:400},onSubmit:async s=>{try{let l="";t&&(l=await Ds(t)),e.handleAuthResponse(await r.startNewUser({projectId:e.projectId,clientId:e.clientId,firstName:s.firstName,lastName:s.lastName,email:s.email,password:s.password,remember:s.remember==="true",recaptchaSiteKey:t,recaptchaToken:l}))}catch(l){n(Bs(l))}}},Y.createElement(rh,{sx:{flexDirection:"column"}},e.children),Y.createElement(No,{issues:f}),o&&Y.createElement(Y.Fragment,null,Y.createElement(Ts,{position:"center",p:"xl",style:{height:70}},Y.createElement(cr,{googleClientId:o,handleGoogleCredential:async s=>{try{e.handleAuthResponse(await r.startGoogleLogin({googleClientId:s.clientId,googleCredential:s.credential,createUser:!0}))}catch(l){n(Bs(l))}}})),Y.createElement(nh,{label:"or",labelPosition:"center",my:"lg"})),Y.createElement(lh,{spacing:"xl"},Y.createElement(on,{name:"firstName",type:"text",label:"First name",placeholder:"First name",required:!0,autoFocus:!0,error:xe(a,"firstName")}),Y.createElement(on,{name:"lastName",type:"text",label:"Last name",placeholder:"Last name",required:!0,error:xe(a,"lastName")}),Y.createElement(on,{name:"email",type:"email",label:"Email",placeholder:"name@domain.com",required:!0,error:xe(a,"email")}),Y.createElement(fh,{name:"password",label:"Password",autoComplete:"off",required:!0,error:xe(a,"password")}),Y.createElement(ks,{color:"dimmed",size:"xs"},"By clicking submit you agree to the Medplum"," ",Y.createElement(pr,{href:"https://www.medplum.com/privacy"},"Privacy\xA0Policy")," and ",Y.createElement(pr,{href:"https://www.medplum.com/terms"},"Terms\xA0of\xA0Service"),"."),Y.createElement(ks,{color:"dimmed",size:"xs"},"This site is protected by reCAPTCHA and the Google"," ",Y.createElement(pr,{href:"https://policies.google.com/privacy"},"Privacy\xA0Policy")," and ",Y.createElement(pr,{href:"https://policies.google.com/terms"},"Terms\xA0of\xA0Service")," apply.")),Y.createElement(Ts,{position:"apart",mt:"xl",noWrap:!0},Y.createElement(ah,{name:"remember",label:"Remember me",size:"xs"}),Y.createElement(th,{type:"submit"},"Create account")))}function b0(e){let{type:o,projectId:t,clientId:r,googleClientId:a,recaptchaSiteKey:n,onSuccess:f}=e,s=S(),[l,i]=Ms(),[u,d]=Ms();dh(()=>{o==="patient"&&l&&s.startNewPatient({login:l,projectId:t}).then(g=>s.processCode(g.code)).then(()=>f()).catch(g=>d(uh(g)))},[s,o,t,l,f]);function c(g){g.code?s.processCode(g.code).then(()=>f()).catch(console.log):g.login&&i(g.login)}return xr.createElement(Ut,{width:450},u&&xr.createElement("pre",null,JSON.stringify(u,null,2)),!l&&xr.createElement(As,{projectId:t,clientId:r,googleClientId:a,recaptchaSiteKey:n,handleAuthResponse:c},e.children),l&&o==="project"&&xr.createElement(ur,{login:l,handleAuthResponse:c}))}import{showNotification as Us}from"@mantine/notifications";import{normalizeErrorString as Qs}from"@medplum/core";import mo,{useCallback as rn,useEffect as Gh,useState as an}from"react";import{Anchor as Fs,Button as ws,Center as Os,Checkbox as ch,Divider as mh,Group as tn,PasswordInput as ph,Stack as xh,TextInput as Ih}from"@mantine/core";import{normalizeOperationOutcome as gh}from"@medplum/core";import j,{useCallback as Ir,useState as Es}from"react";function Ls(e){let[o,t]=Es();return o?j.createElement(Ch,{email:o,...e}):j.createElement(hh,{setEmail:t,...e})}function hh(e){let{setEmail:o,onRegister:t,handleAuthResponse:r,children:a,disableEmailAuth:n,...f}=e,s=S(),l=!e.disableGoogleAuth&&mr(e.googleClientId),i=Ir(async c=>{if(!c.authorizeUrl)return!1;let g=JSON.stringify({...await s.ensureCodeChallenge(f),domain:c.domain}),y=new URL(c.authorizeUrl);return y.searchParams.set("state",g),window.location.assign(y.toString()),!0},[s,f]),u=Ir(async c=>{let g=await s.post("auth/method",{email:c.email});await i(g)||o(c.email)},[s,i,o]),d=Ir(async c=>{let g=await s.startGoogleLogin({...f,googleCredential:c.credential});await i(g)||r(g)},[s,f,i,r]);return j.createElement($,{style:{maxWidth:400},onSubmit:u},j.createElement(Os,{sx:{flexDirection:"column"}},a),l&&j.createElement(j.Fragment,null,j.createElement(tn,{position:"center",p:"xl",style:{height:70}},j.createElement(cr,{googleClientId:l,handleGoogleCredential:d})),!n&&j.createElement(mh,{label:"or",labelPosition:"center",my:"lg"})),!n&&j.createElement(Ih,{name:"email",type:"email",label:"Email",placeholder:"name@domain.com",required:!0,autoFocus:!0}),j.createElement(tn,{position:"apart",mt:"xl",spacing:0,noWrap:!0},j.createElement("div",null,t&&j.createElement(Fs,{component:"button",type:"button",color:"dimmed",onClick:t,size:"xs"},"Register")),!n&&j.createElement(ws,{type:"submit"},"Next")))}function Ch(e){let{onForgotPassword:o,handleAuthResponse:t,children:r,...a}=e,n=S(),[f,s]=Es(),l=Ft(f,void 0),i=Ir(u=>{n.startLogin({...a,password:u.password,remember:u.remember==="on"}).then(t).catch(d=>s(gh(d)))},[n,a,t]);return j.createElement($,{style:{maxWidth:400},onSubmit:i},j.createElement(Os,{sx:{flexDirection:"column"}},r),j.createElement(No,{issues:l}),j.createElement(xh,{spacing:"xl"},j.createElement(ph,{name:"password",label:"Password",autoComplete:"off",required:!0,autoFocus:!0,error:xe(f,"password")})),j.createElement(tn,{position:"apart",mt:"xl",spacing:0,noWrap:!0},o&&j.createElement(Fs,{component:"button",type:"button",color:"dimmed",onClick:o,size:"xs"},"Forgot password"),j.createElement(ch,{id:"remember",name:"remember",label:"Remember me",size:"xs",sx:{lineHeight:1}}),j.createElement(ws,{type:"submit"},"Sign in")))}import{Avatar as yh,Center as vh,Group as Sh,Stack as bh,Text as Rs,Title as Ph,UnstyledButton as Dh}from"@mantine/core";import{normalizeOperationOutcome as Th}from"@medplum/core";import we,{useState as kh}from"react";function Ns(e){let o=S(),[t,r]=kh();return we.createElement(bh,null,we.createElement(vh,{sx:{flexDirection:"column"}},we.createElement(Ye,{size:32}),we.createElement(Ph,{order:3},"Choose profile")),we.createElement(No,{outcome:t}),e.memberships.map(a=>we.createElement(Dh,{key:a.id,onClick:()=>{o.post("auth/profile",{login:e.login,profile:a.id}).then(e.handleAuthResponse).catch(n=>r(Th(n)))}},we.createElement(Sh,null,we.createElement(yh,{radius:"xl"}),we.createElement("div",{style:{flex:1}},we.createElement(Rs,{size:"sm",weight:500},a.profile?.display),we.createElement(Rs,{color:"dimmed",size:"xs"},a.project?.display))))))}import{Button as Bh,Center as Ah,Checkbox as Mh,Group as Fh,Stack as Hs,Title as wh}from"@mantine/core";import Ge from"react";function Vs(e){let o=S();return Ge.createElement($,{style:{maxWidth:400},onSubmit:t=>{o.post("auth/scope",{login:e.login,scope:Object.keys(t).join(" ")}).then(e.handleAuthResponse).catch(console.log)}},Ge.createElement(Hs,null,Ge.createElement(Ah,{sx:{flexDirection:"column"}},Ge.createElement(Ye,{size:32}),Ge.createElement(wh,null,"Choose scope")),Ge.createElement(Hs,null,(e.scope??"openid").split(" ").map(t=>Ge.createElement(Mh,{key:t,id:t,name:t,label:t,defaultChecked:!0}))),Ge.createElement(Fh,{position:"right",mt:"xl"},Ge.createElement(Bh,{type:"submit"},"Set scope"))))}import{Alert as Oh,Button as Eh,Center as Lh,Group as Rh,Stack as qs,TextInput as Nh,Title as Hh}from"@mantine/core";import{normalizeErrorString as Vh}from"@medplum/core";import Oe,{useState as qh}from"react";function Gs(e){let o=S(),[t,r]=qh();return Oe.createElement($,{style:{maxWidth:400},onSubmit:a=>{r(void 0),o.post("auth/mfa/verify",{login:e.login,token:a.token}).then(e.handleAuthResponse).catch(n=>r(Vh(n)))}},Oe.createElement(qs,null,Oe.createElement(Lh,{sx:{flexDirection:"column"}},Oe.createElement(Ye,{size:32}),Oe.createElement(Hh,null,"Enter MFA code")),t&&Oe.createElement(Oh,{icon:Oe.createElement(ro,{size:16}),title:"Error",color:"red"},t),Oe.createElement(qs,null,Oe.createElement(Nh,{name:"token",label:"MFA code",required:!0})),Oe.createElement(Rh,{position:"right",mt:"xl"},Oe.createElement(Eh,{type:"submit"},"Submit code"))))}function C1(e){let{login:o,chooseScopes:t,onSuccess:r,onForgotPassword:a,onRegister:n,onCode:f,...s}=e,l=S(),[i,u]=an(),[d,c]=an(!1),[g,y]=an(),A=rn(B=>{f?f(B):l.processCode(B).then(()=>{r&&r()}).catch(x=>Us({color:"red",message:Qs(x)}))},[l,f,r]),v=rn(B=>{c(!!B.mfaRequired),B.login&&u(B.login),B.memberships&&y(B.memberships),B.code&&(t?y(void 0):A(B.code))},[t,A]),D=rn(B=>{A(B.code)},[A]);return Gh(()=>{o&&!i&&l.get("auth/login/"+o).then(v).catch(B=>Us({color:"red",message:Qs(B)}))},[l,o,i,v]),mo.createElement(Ut,{width:450},(()=>i?d?mo.createElement(Gs,{login:i,handleAuthResponse:v}):g?mo.createElement(Ns,{login:i,memberships:g,handleAuthResponse:v}):e.projectId==="new"?mo.createElement(ur,{login:i,handleAuthResponse:v}):e.chooseScopes?mo.createElement(Vs,{login:i,scope:e.scope,handleAuthResponse:D}):mo.createElement("div",null,"Success"):mo.createElement(Ls,{onForgotPassword:a,onRegister:n,handleAuthResponse:v,disableGoogleAuth:e.disableGoogleAuth,disableEmailAuth:e.disableEmailAuth,...s},e.children))())}export{fn as AddressDisplay,dn as AddressInput,pn as AnnotationInput,Ab as AppShell,So as AsyncAutocomplete,Qn as AttachmentArrayDisplay,Wn as AttachmentArrayInput,Po as AttachmentButton,Ee as AttachmentDisplay,Pt as AttachmentInput,et as BackboneElementDisplay,rt as BackboneElementInput,Vf as CalendarInput,Mt as CheckboxFormSection,bt as CodeInput,To as CodeableConceptDisplay,cf as CodeableConceptInput,_n as CodingDisplay,mf as CodingInput,Yn as ContactDetailDisplay,xf as ContactDetailInput,Tt as ContactPointDisplay,Ot as ContactPointInput,Ke as Container,Me as DateTimeInput,IA as DefaultResourceTimeline,Jn as DescriptionList,$n as DescriptionListEntry,ga as DiagnosticReportDisplay,Ut as Document,Qc as ElementDefinitionInputSelector,Rf as ElementDefinitionTypeInput,BA as EncounterTimeline,ho as ErrorBoundary,Ax as FhirPathTable,$ as Form,be as FormSection,Nn as Header,yt as HumanNameDisplay,hf as HumanNameInput,ef as IdentifierDisplay,yf as IdentifierInput,Kr as Loading,Ye as Logo,se as MedplumLink,jh as MedplumProvider,dF as MemoizedFhirPathTable,tF as MemoizedSearchControl,tf as MoneyDisplay,vf as MoneyInput,Un as Navbar,km as ObservationTable,No as OperationOutcomeAlert,Fo as Panel,PF as PatientTimeline,qF as PlanDefinitionBuilder,Yo as QuantityDisplay,De as QuantityInput,hw as QuestionnaireBuilder,cs as QuestionnaireForm,er as QuestionnaireItemType,ja as QuestionnaireRepeatWrapper,kt as RangeDisplay,at as RangeInput,no as ReferenceDisplay,Ao as ReferenceInput,Vw as ReferenceRangeEditor,eg as ReferenceRangeGroupEditor,b0 as RegisterForm,Kw as RequestGroupDisplay,ff as ResourceArrayDisplay,Mf as ResourceArrayInput,Ce as ResourceAvatar,je as ResourceBadge,lO as ResourceBlame,pO as ResourceDiff,BD as ResourceForm,SO as ResourceHistoryTable,Rt as ResourceInput,Le as ResourceName,pe as ResourcePropertyDisplay,He as ResourcePropertyInput,ha as ResourceTable,Ze as ResourceTimeline,OO as Scheduler,wa as SearchChangeEvent,io as SearchClickEvent,Cx as SearchControl,Dl as SearchFieldEditor,Fl as SearchFilterEditor,Oa as SearchLoadEvent,qO as ServiceRequestTimeline,C1 as SignInForm,Vt as StatusBadge,Zf as Timeline,_e as TimelineItem,Lf as TimingInput,Pa as addDateFilterBetween,zA as addField,Eo as addFilter,xl as addLastMonthFilter,Da as addMissingFilter,gl as addNextMonthFilter,Il as addThisMonthFilter,ml as addTodayFilter,pl as addTomorrowFilter,hl as addYearToDateFilter,cl as addYesterdayFilter,ye as buildFieldNameString,QA as clearFilters,Wt as clearFiltersOnField,Gd as convertIsoToLocal,Ud as convertLocalToIso,dr as createScriptTag,dl as deleteFilter,xe as getErrorsForInput,Ft as getIssuesForExpression,Zc as getMonthString,_l as getNewMultiSelectValues,lt as getOpString,or as getQuestionnaireItemReferenceTargetTypes,Ds as getRecaptcha,Sl as getSearchOperators,yl as getSortField,ma as getStartMonth,Sg as getTimeString,Se as getValueAndType,Ps as initRecaptcha,Kl as isChoiceQuestion,jl as isQuestionEnabled,vl as isSortDescending,Hn as parseForm,bl as renderValue,ft as setFilters,Bp as setOffset,Cl as setPage,tt as setPropertyValue,tr as setQuestionnaireItemReferenceTargetTypes,Ta as setSort,ol as sortByDateAndPriority,WA as toggleSort,S as useMedplum,Wo as useMedplumContext,Qe as useMedplumNavigate,It as useMedplumProfile,X as useResource};
67
+ `)),"...",eo.createElement("br",null))}import{Button as Xs,Group as bh,Stack as Ph,TextInput as Js}from"@mantine/core";import{deepClone as Th}from"@medplum/core";import we,{useEffect as Dh,useState as Ks}from"react";function y1(e){let o=v(),t=X(e.defaultValue),[r,a]=Ks(!1),[n,f]=Ks();return Dh(()=>{t&&(f(Th(t)),o.requestSchema(t.resourceType).then(()=>a(!0)).catch(console.log))},[o,t]),!r||!n?we.createElement("div",null,"Loading..."):we.createElement("form",{noValidate:!0,autoComplete:"off",onSubmit:s=>{s.preventDefault(),e.onSubmit&&e.onSubmit(n)}},we.createElement(Ph,{mb:"xl"},we.createElement(ve,{title:"Resource Type",htmlFor:"resourceType",outcome:e.outcome},we.createElement(Js,{name:"resourceType",defaultValue:n.resourceType,disabled:!0})),we.createElement(ve,{title:"ID",htmlFor:"id",outcome:e.outcome},we.createElement(Js,{name:"id",defaultValue:n.id,disabled:!0}))),we.createElement(tt,{typeName:n.resourceType,defaultValue:n,outcome:e.outcome,onChange:f}),we.createElement(bh,{position:"right",mt:"xl"},we.createElement(Xs,{type:"submit"},"OK"),e.onDelete&&we.createElement(Xs,{variant:"outline",color:"red",type:"button",onClick:()=>{e.onDelete(n)}},"Delete")))}import{Table as kh}from"@mantine/core";import{formatDateTime as Bh,normalizeErrorString as Ah}from"@medplum/core";import ce,{useEffect as Fh,useState as Mh}from"react";function B1(e){let o=v(),[t,r]=Mh(e.history);return Fh(()=>{!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(kh,{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(wh,{key:"entry-"+n,entry:a})))):ce.createElement("div",null,"Loading...")}function wh(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,Bh(t.meta?.lastUpdated)),ce.createElement("td",null,ce.createElement(se,{to:Oh(t)},t.meta?.versionId))):ce.createElement("tr",null,ce.createElement("td",{colSpan:3},Ah(o?.outcome)))}function Oh(e){return`/${e.resourceType}/${e.id}/_history/${e.meta?.versionId}`}import{Button as Nh,createStyles as Hh,Stack as Vh,Text as qh}from"@mantine/core";import{getReferenceString as Gh,isReference as Uh}from"@medplum/core";import ee,{useState as Ir}from"react";import{allOk as Eh,normalizeOperationOutcome as Lh}from"@medplum/core";import{useEffect as Rh,useState as xr}from"react";function L1(e,o){return ln("search",e,o)}function R1(e,o){return ln("searchOne",e,o)}function $s(e,o){return ln("searchResources",e,o)}function ln(e,o,t){let r=v(),[a,n]=xr(),[f,s]=xr(!1),[l,i]=xr(),[u,d]=xr();return Rh(()=>{let c=r.fhirSearchUrl(o,t).toString();c!==a&&(n(c),r[e](o,t).then(x=>{s(!1),i(x),d(Eh)}).catch(x=>{s(!1),i(void 0),d(Lh(x))}))},[r,e,o,t,a,i]),[l,f,u]}var Qh=Hh(e=>({container:{display:"flex",minHeight:400},info:{minWidth:300,padding:20,borderRight:`1px solid ${e.colors.gray[3]}`},selection:{minWidth:300,padding:20}}));function K1(e){let{classes:o}=Qh(),t=X(e.schedule),r=X(e.questionnaire),[a,n]=Ir(Wt()),[f,s]=Ir(),[l,i]=Ir(),[u,d]=Ir(),[c]=$s("Slot",new URLSearchParams([["_count",(30*24).toString()],["schedule",Uh(e.schedule)?e.schedule.reference:Gh(e.schedule)],["start","gt"+zh(a)],["start","lt"+Wh(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(ge,{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(sl,{slots:c,onChangeMonth:n,onClick:s})),f&&!l&&ee.createElement("div",null,ee.createElement("h3",null,"Select time"),ee.createElement(Vh,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(Nh,{variant:"outline",style:{width:150},onClick:()=>i(y)},js(k)))}))),f&&l&&!u&&ee.createElement(Ls,{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 zh(e){return _s(e.getTime())}function Wh(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 gr}from"@medplum/core";import Xh from"react";function oE(e){return Xh.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})})}export{dn as AddressDisplay,xn as AddressInput,In as AnnotationInput,wb as AppShell,So as AsyncAutocomplete,Wn as AttachmentArrayDisplay,Jn as AttachmentArrayInput,To as AttachmentButton,Oe as AttachmentDisplay,vt as AttachmentInput,Zo as BackboneElementDisplay,tt as BackboneElementInput,sl as CalendarInput,Rt as CheckboxFormSection,yt as CodeInput,Ao as CodeableConceptDisplay,Of as CodeableConceptInput,bf as CodingDisplay,Nt as CodingInput,Tf as ContactDetailDisplay,Lf as ContactDetailInput,wt as ContactPointDisplay,Vt as ContactPointInput,$e as Container,Me as DateTimeInput,pM as DefaultResourceTimeline,Cf as DescriptionList,yf as DescriptionListEntry,Pa as DiagnosticReportDisplay,St as Document,jm as ElementDefinitionInputSelector,al as ElementDefinitionTypeInput,vM as EncounterTimeline,ho as ErrorBoundary,PI as FhirPathTable,K as Form,ve as FormSection,Vn as Header,gt as HumanNameDisplay,qf as HumanNameInput,Df as IdentifierDisplay,Uf as IdentifierInput,_r as Loading,je as Logo,se as MedplumLink,dO as MedplumProvider,nO as MemoizedFhirPathTable,jw as MemoizedSearchControl,Bf as MoneyDisplay,Qf as MoneyInput,zn as Navbar,Ap as ObservationTable,Bo as OperationOutcomeAlert,ko as Panel,hO as PatientTimeline,LO as PlanDefinitionBuilder,_o as QuantityDisplay,Pe as QuantityInput,m0 as QuestionnaireBuilder,Ls as QuestionnaireForm,fr as QuestionnaireItemType,rn as QuestionnaireRepeatWrapper,Ot as RangeDisplay,ot as RangeInput,lo as ReferenceDisplay,wo as ReferenceInput,E0 as ReferenceRangeEditor,Yg as ReferenceRangeGroupEditor,lT as RegisterForm,z0 as RequestGroupDisplay,wf as ResourceArrayDisplay,Zf as ResourceArrayInput,ge as ResourceAvatar,_e as ResourceBadge,a1 as ResourceBlame,d1 as ResourceDiff,y1 as ResourceForm,B1 as ResourceHistoryTable,Ut as ResourceInput,Ee as ResourceName,pe as ResourcePropertyDisplay,qe as ResourcePropertyInput,Ta as ResourceTable,Ye as ResourceTimeline,K1 as Scheduler,Va as SearchChangeEvent,co as SearchClickEvent,pI as SearchControl,Jl as SearchFieldEditor,Yl as SearchFilterEditor,qa as SearchLoadEvent,oE as ServiceRequestTimeline,aD as SignInForm,Xt as StatusBadge,vl as Timeline,Ze as TimelineItem,rl as TimingInput,Ma as addDateFilterBetween,HM as addField,Ro as addFilter,Nl as addLastMonthFilter,wa as addMissingFilter,Vl as addNextMonthFilter,Hl as addThisMonthFilter,Ll as addTodayFilter,Rl as addTomorrowFilter,ql as addYearToDateFilter,El as addYesterdayFilter,he as buildFieldNameString,NM as clearFilters,_t as clearFiltersOnField,Nf as convertIsoToLocal,Hf as convertLocalToIso,Tt as createScriptTag,Ol as deleteFilter,me as getErrorsForInput,bt as getIssuesForExpression,ys as getNewMultiSelectValues,nt as getOpString,lr as getQuestionnaireItemReferenceTargetTypes,Yn as getRecaptcha,zl as getSearchOperators,Ul as getSortField,Zn as initRecaptcha,hs as isChoiceQuestion,Cs as isQuestionEnabled,Ql as isSortDescending,qn as parseForm,hr as reactContext,Wl as renderValue,at as setFilters,Px as setOffset,Gl as setPage,sr as setQuestionnaireItemReferenceTargetTypes,Oa as setSort,Pl as sortByDateAndPriority,VM as toggleSort,v as useMedplum,Qo as useMedplumContext,ze as useMedplumNavigate,mt as useMedplumProfile,X as useResource,L1 as useSearch,R1 as useSearchOne,$s as useSearchResources};
68
68
  //# sourceMappingURL=index.mjs.map